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

字符串重复项替换问题:生成新内容仍存重复的解决求助

解决重复词替换后仍出现重复的问题

问题说明

需要处理重复词替换场景:将字符串中重复出现的词(除首次出现外)替换为随机生成的唯一词,但现有代码生成的替换词仍会和已有词重复。

示例:

  • 输入:"aaaa bbbb cccc bbbb cccc dddd eeee"
  • 错误输出:"aaaa bbbb cccc aaaa eeee dddd eeee"
  • 期望输出:"aaaa bbbb cccc ffff gggg dddd eeee"

原代码问题分析

  1. 重复原词处理不彻底:用replaced Set标记原词,替换一次后就不再处理该原词的其他重复项,导致部分重复词未被替换。
  2. 替换词唯一性校验失效:仅基于替换前的词频统计判断替换词是否存在,未同步更新已生成的新替换词,导致新生成词可能和刚替换的词重复。
  3. 循环逻辑冗余且错误:while循环的触发条件设计不合理,无法保证所有重复项都被处理。

修正后的代码

function generateRandomWord(length) {
    const letters = 'abcdefghijklmnopqrstuvwxyz';
    // 生成与原词长度一致的重复字母词(匹配示例风格)
    const randomLetter = letters[Math.floor(Math.random() * letters.length)];
    return randomLetter.repeat(length);
}

function formatTEXT(text) {
    const words = text.split(" ");
    const firstOccurrence = new Map(); // 记录每个词首次出现的索引
    const existingWords = new Set();   // 保存所有已存在的词(原词+替换词)

    // 第一步:标记首次出现的词并加入已存在集合
    words.forEach((word, index) => {
        if (!firstOccurrence.has(word)) {
            firstOccurrence.set(word, index);
            existingWords.add(word);
        }
    });

    // 第二步:遍历替换非首次出现的重复词
    for (let i = 0; i < words.length; i++) {
        const currentWord = words[i];
        // 仅替换非首次出现的词
        if (firstOccurrence.get(currentWord) !== i) {
            let replacement;
            // 循环生成直到得到唯一的替换词
            do {
                replacement = generateRandomWord(currentWord.length);
            } while (existingWords.has(replacement));
            
            words[i] = replacement;
            existingWords.add(replacement);
        }
    }

    return words.join(" ");
}

// 测试示例
console.log(formatTEXT("aaaa bbbb cccc bbbb cccc dddd eeee"));

代码改进说明

  1. 精准标记重复项:用firstOccurrence Map记录每个词的首次出现位置,明确区分需要替换的非首次重复项。
  2. 实时维护唯一词集合:existingWords集合同步保存原词和已生成的替换词,确保新生成的替换词绝对唯一。
  3. 循环生成唯一替换词:通过do-while循环生成替换词,直到得到不在existingWords中的结果,彻底避免重复。
  4. 简化逻辑:去掉冗余的while循环,一次遍历即可完成所有替换,逻辑更清晰高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:45:25