【正则表达式的妙用】

题目:

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

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"]));
相关推荐
晓得迷路了9 分钟前
栗子前端技术周刊第 134 期 - React Router v8、TypeScript 7 RC、React Native 0.86...
前端·javascript·react.js
代码煮茶16 小时前
React 组件封装方法论 —— 以 Todo App 为例
javascript·react.js
任沫16 小时前
Agent之Function Call
javascript·人工智能·go
默_笙17 小时前
🛬 我让 AI 帮我写了一个打飞机游戏,结果 Canvas 把我整不会了
前端·javascript
梯度不陡17 小时前
AI 到底能不能从零写软件?ProgramBench 和 RepoZero 给出了两种答案
前端·javascript·面试
胡萝卜术19 小时前
滑动窗口最大值:从暴力到单调队列,层层优化全解析
前端·javascript·面试
kyriewen20 小时前
2026 年了,这 6 个 npm 包可以卸载了——浏览器原生 API 已经能替代
前端·javascript·npm
铁皮饭盒21 小时前
bun直接tsx,优雅!
javascript·后端
_柳青杨1 天前
一文吃透 Node.js 事件循环:从原理到 Node 20+ 重大变更
javascript·后端
JieE2121 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法