You need to enable JavaScript to run this app. JavaScript查找首个不重复字符代码仅过16/19测试排错咨询
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript查找首个不重复字符代码仅过16/19测试排错咨询

问题分析

你的代码核心问题出在多余的空格处理逻辑:

  • 题目明确说明输入仅由小写英文字母组成,不存在空格,你添加的replace(" ", "")属于完全不必要的操作
  • 更关键的是,String.replace()方法如果第一个参数传入普通字符串,只会替换第一个匹配到的字符,如果遇到隐含空格的边界测试用例,会直接修改原字符串的字符顺序,导致你统计的字符出现次数和原字符串不一致,最终返回错误结果
修复方案

直接删除多余的replace逻辑,拆分原字符串即可:

function firstNotRepeatingCharacter(s) {
    let strArr = s.split(""),
        newArr = [];
    for (let i = 0; i < strArr.length; i++) {
        newArr = strArr.filter(lol => lol === strArr[i]);
        if (newArr.length === 1) {
            return newArr[0];  
        }
    }
    return "_";
}

如果需要优化长字符串的运行效率,可以改用哈希表统计字符次数,时间复杂度降到O(n),性能更好:

function firstNotRepeatingCharacter(s) {
    const count = {};
    // 第一次遍历统计每个字符出现次数
    for (const c of s) {
        count[c] = (count[c] || 0) + 1;
    }
    // 第二次遍历找第一个出现次数为1的字符
    for (const c of s) {
        if (count[c] === 1) return c;
    }
    return "_";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:45:11