问答题522/1593去除字符串中出现次数最少的字符,不改变原字符串的顺序。

实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。

1“ababac” —— “ababa” 2“aaabbbcceeff” —— “aaabbb”
难度:
2023-05-15 创建

参考答案:

可以通过以下步骤使用 JavaScript 去除字符串中出现次数最少的字符,同时不改变原字符串的顺序:

  1. 定义一个对象来存储每个字符出现的次数。

  2. 遍历字符串,将每个字符出现的次数保存到对象中。

  3. 找出出现次数最少的字符,并将其从对象中删除。

  4. 遍历字符串并根据存储的次数对象过滤出符合条件的字符。

  5. 将符合条件的字符拼接成新的字符串并返回。

下面是代码示例:

1function removeLeastFrequentChar(str) { 2 // 定义存储每个字符出现次数的对象 3 const charMap = {}; 4 5 // 遍历字符串并将每个字符出现的次数保存到对象中 6 for (let i = 0; i < str.length; i++) { 7 const char = str[i]; 8 if (!charMap[char]) { 9 charMap[char] = 1; 10 } else { 11 charMap[char]++; 12 } 13 } 14 15 // 找出出现次数最少的字符,并将其从对象中删除 16 const minCount = Math.min(...Object.values(charMap)); 17 for (const key in charMap) { 18 if (charMap.hasOwnProperty(key)) { 19 if (charMap[key] === minCount) { 20 delete charMap[key]; 21 } 22 } 23 } 24 25 // 遍历字符串并根据存储的次数对象过滤出符合条件的字符 26 const filteredChars = []; 27 for (let i = 0; i < str.length; i++) { 28 const char = str[i]; 29 if (charMap[char]) { 30 filteredChars.push(char); 31 } 32 } 33 34 // 将符合条件的字符拼接成新的字符串并返回 35 return filteredChars.join(""); 36}

最近更新时间:2024-07-22

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!