【正则表达式的妙用】

题目:

给定一个字符串,折叠操作的定义为:

1、对其中连续的字符可以进行删除字符操作,但要保证至少保留其中1个字符;

2、一次可以对多个不同的连续字符进行删除字符操作

如给定字符串 "abbbcccbbbeeef", 通过折叠操作可以得到"abcccbbbeeef", "abcccbeeef", "abcbef"等,但是不能得到 "acccbbbeeef", "abbeeef"

给定一个字符串和一个子序列数组,返回子序列数组中符合条件的子序列个数

思路:

为字符串构建正则表达式,比如 "abbbcccbbbeeef" => "ab{1,3}c{1,3}b{1,3}e{1,3}f"

js 复制代码
//根据字符串构造正则 
const getCount = (str, arr) => {
  // 获得正则模板
  str += "$"; // 哨兵位,这样不用为最后一个元素做特殊处理
  let count = 0;
  let reg = "";
  for (let i = 1; i < str.length; i++) {
    if (str[i] === str[i - 1]) {
      count++;
    } else {
      if (count === 0) {
        reg += str[i - 1];
        continue;
      }
      reg += str[i - 1] + `{1,${count + 1}}`;
      count = 0;
    }
  }
  return arr.filter((item) => new RegExp(reg).test(item)).length;
};

console.log(
  getCount("abbbcccbbbeeeff", [
    "abcccbbbeeef",
    "abcccbeeef",
    "abcbef",
    "acccbbbeeef",
    "abbeeef",
  ])
);

console.log(getCount("bbbeeef", ["bf", "bef", "ef", "beeeef"]));
相关推荐
im_AMBER2 分钟前
HTTP概述 01
javascript·网络·笔记·网络协议·学习·http
Highcharts.js2 分钟前
在Python中配置高度交互的数据可视化:Highcharts完全指南
开发语言·python·信息可视化·highcharts
小生凡一5 分钟前
图解|Go语言实现 Agent|LLM+MCP+RAG
开发语言·后端·golang
思茂信息16 分钟前
CST电动车EMC仿真(二)——电机控制器MCU的EMC仿真
开发语言·javascript·单片机·嵌入式硬件·cst·电磁仿真
晴殇i20 分钟前
前端极速性能优化:从加载到渲染的全链路实战指南
前端·javascript
AAA阿giao21 分钟前
JavaScript 深拷贝全解析:从栈与堆内存机制到安全对象复制实践
前端·javascript·json
AAA阿giao26 分钟前
深入理解 JavaScript 的 Array.prototype.map() 方法及其经典陷阱:从原理到面试实战
前端·javascript·面试
开始了码40 分钟前
关于qt运行程序点击几下未响应的原因
开发语言·qt
Kimser41 分钟前
QT C++ QWebEngine与Web JS之间通信
javascript·c++·qt
QT 小鲜肉41 分钟前
【QT/C++】Qt样式设置之CSS知识(系统性概括)
linux·开发语言·css·c++·笔记·qt