You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现数组中所有变位词的删除?现有代码结果不符合预期

解决数组中删除所有变位词的问题

你的代码当前逻辑是保留每组变位词中的最后一个元素,但你需要的是移除所有存在变位词的元素,仅保留无变位词的元素。

原代码问题分析

原代码用对象存储每个排序字符串对应的最后出现单词,这会保留每组变位词中的一个实例(最后出现的那个),而非移除所有变位词。比如输入['cab', 'bac', 'art']时,'cab'和'bac'排序后都是'abc',对象最终存储的是最后出现的'bac',导致返回结果包含'bac'和'art'。

解决方案

要实现需求,需完成两步:

  • 统计每个排序后字符串在数组中的出现次数
  • 过滤出排序后字符串出现次数为1的单词(即无变位词的单词)

修正后的代码

const deleteAnagrams = (arr) => {
    // 统计每个变位词组的出现频率
    const freqMap = {};
    for (const word of arr) {
        const sortedWord = word.toLowerCase().split('').sort().join('');
        freqMap[sortedWord] = (freqMap[sortedWord] || 0) + 1;
    }

    // 仅保留无变位词的单词
    return arr.filter(word => {
        const sortedWord = word.toLowerCase().split('').sort().join('');
        return freqMap[sortedWord] === 1;
    });
};

console.log(deleteAnagrams(['cab', 'bac', 'art'])); // 输出: ["art"]

说明

  • 第一次遍历数组,用freqMap记录每组变位词的出现次数
  • 第二次遍历数组,只保留所在变位词组仅出现一次的单词,以此移除所有存在变位词的元素

内容的提问来源于stack exchange,提问作者aftab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:50:33