如何使用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
相关产品推荐
相关产品推荐

