You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript计算字符串中连续重复字符与数字的总次数?

计算字符串中连续重复字符/数字的总次数

问题描述

给定字符串(如'11111aaaio222'),计算其中所有连续重复出现(次数≥2)的字符/数字的总次数。示例中'1'连续出现5次、'a'连续出现3次、'2'连续出现3次,总和为5+3+3=11。


解决方案1:遍历字符串统计

通过遍历字符串,跟踪当前字符的连续出现次数,累计符合条件的组长度:

function sumConsecutiveRepeats(str) {
  if (str.length < 2) return 0;
  let total = 0;
  let currentCount = 1;

  for (let i = 1; i < str.length; i++) {
    if (str[i] === str[i-1]) {
      currentCount++;
    } else {
      // 仅累计连续出现≥2次的组
      if (currentCount >= 2) {
        total += currentCount;
      }
      currentCount = 1;
    }
  }
  // 处理字符串末尾的最后一组
  if (currentCount >= 2) {
    total += currentCount;
  }
  return total;
}

// 测试示例
const value = '11111aaaio222';
console.log(sumConsecutiveRepeats(value)); // 输出:11

解决方案2:正则表达式匹配

利用正则表达式快速定位所有连续重复的字符组,再累加各组长度:

function sumConsecutiveRepeats(str) {
  // 匹配连续出现≥2次的相同字符,返回匹配结果数组
  const repeatedGroups = str.match(/(.)\1+/g) || [];
  // 累加每个匹配组的长度
  return repeatedGroups.reduce((total, group) => total + group.length, 0);
}

// 测试示例
const value = '11111aaaio222';
console.log(sumConsecutiveRepeats(value)); // 输出:11

正则说明

/(.)\1+/g:

  • (.):捕获任意单个字符
  • \1:引用之前捕获的字符,确保是相同字符
  • +:匹配至少1次重复,因此整个规则匹配连续出现≥2次的相同字符组
  • g:全局匹配,找出所有符合条件的组

内容的提问来源于stack exchange,提问作者Akshay Kamble

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:55:28