实现判断单词是否含连续相同字母的JS函数,代码错误排查
代码存在的问题
- 循环边界逻辑错误
字符串的索引取值范围是0 ~ 单词长度-1,你的代码里循环条件用了i <= word.length和j <= word.length,会导致循环到超出字符串长度的位置,取到undefined值,两个undefined比较也会返回true,产生错误的判断结果。 - 不符合「连续相同字母」的判断逻辑
你使用了双层循环,当前的逻辑是只要单词中存在任意两个相同的字母(不管位置是否相邻)就会返回true,比如单词abac会匹配到索引0和索引2的a触发返回,但这两个字母并不连续,不符合需求。 - 返回时机错误
你把return false写在了第一层循环内部、第二层循环结束的位置,这会导致第一层循环只执行一次i=0的情况,内层循环遍历结束后就会直接返回false,后续索引的判断逻辑完全不会执行。
优化后的正确代码
module.exports = (word) => { // 单层循环直接对比相邻字符即可 for (let i = 1; i < word.length; i++) { // 用严格相等===避免隐式类型转换带来的异常问题 if (word[i] === word[i-1]) { return true } } return false };
内容的提问来源于stack exchange,提问作者Steph
相关产品推荐
相关产品推荐

