编写JavaScript函数:删除字符串中偶数次出现的字符
解决JavaScript删除字符串中偶数次出现字符的问题
实现思路
要实现删除每个字符偶数次出现的实例(即保留第1、3、5...次出现的字符,删除第2、4、6...次的),核心是追踪每个字符的出现次数,只保留奇数次出现的字符。
代码实现
基础循环版本
function removeEvenOccurrences(str) { // 记录每个字符的出现次数 const charCount = {}; let result = ''; for (const char of str) { // 更新当前字符的计数,初始为0则加1,否则累加 charCount[char] = (charCount[char] || 0) + 1; // 仅当计数为奇数时,将字符加入结果 if (charCount[char] % 2 !== 0) { result += char; } } return result; }
数组reduce版本(更简洁)
function removeEvenOccurrences(str) { return [...str].reduce((acc, char) => { acc.counts[char] = (acc.counts[char] || 0) + 1; if (acc.counts[char] % 2 !== 0) { acc.result += char; } return acc; }, { result: '', counts: {} }).result; }
测试验证
// 测试示例1 console.log(removeEvenOccurrences('AAABBBCCC')); // 输出: "AABBCC" // 测试示例2 console.log(removeEvenOccurrences('AAAABBBBCCCC')); // 输出: "AABBCC"
代码说明
charCount(或reduce中的counts)对象用于实时记录每个字符的出现次数;- 遍历字符串时,每遇到一个字符就更新计数,若当前计数为奇数,则保留该字符到结果中;
- 两个版本逻辑完全一致,只是写法不同,可根据习惯选择。
内容的提问来源于stack exchange,提问作者AnujaB
相关产品推荐
相关产品推荐

