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

144 阅读1分钟
function removeLeastFrequentChars(str) {
  // 统计每个字符出现的次数
  const charCount = {};
  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    charCount[char] = (charCount[char] || 0) + 1;
  }

  // 找到出现次数最少的字符
  let minCount = Infinity;
  for (const count of Object.values(charCount)) {
    if (count < minCount) {
      minCount = count;
    }
  }

  // 构建结果字符串,只包含出现次数不为最少的字符
  let result = '';
  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    if (charCount[char] !== minCount) {
      result += char;
    }
  }

  return result;
}

// 测试例子
console.log(removeLeastFrequentChars("ababac")); // 输出 "ababa"
console.log(removeLeastFrequentChars("aaabbbcceeff")); // 输出 "aaabbb"