Skip to content

去除字符串中出现次数最少的字符,不改变原字符串的顺序。

Posted on:2024年7月22日 at 11:39

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

“ababac” —— “ababa”
“aaabbbcceeff” —— “aaabbb”

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

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

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

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

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

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

下面是代码示例:

function removeLeastFrequentChar(str) {
  // 定义存储每个字符出现次数的对象
  const charMap = {};

  // 遍历字符串并将每个字符出现的次数保存到对象中
  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    if (!charMap[char]) {
      charMap[char] = 1;
    } else {
      charMap[char]++;
    }
  }

  // 找出出现次数最少的字符,并将其从对象中删除
  const minCount = Math.min(...Object.values(charMap));
  for (const key in charMap) {
    if (charMap.hasOwnProperty(key)) {
      if (charMap[key] === minCount) {
        delete charMap[key];
      }
    }
  }

  // 遍历字符串并根据存储的次数对象过滤出符合条件的字符
  const filteredChars = [];
  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    if (charMap[char]) {
      filteredChars.push(char);
    }
  }

  // 将符合条件的字符拼接成新的字符串并返回
  return filteredChars.join("");
}
原文转自:https://fe.ecool.fun/topic/0003100e-5f40-499e-9e00-8bbbc5e90976