JavaScript纯for循环统计字符串最长单词长度时最后一个单词统计失效问题
问题根源
你的判断逻辑只有在遍历到空格字符时,才会将当前累计的单词长度和历史最长长度做对比更新,最后一个单词后面没有空格触发这个判断,所以永远不会参与最长长度的统计,对应你遇到的两类异常:
- 输入为单个无空格的单词时,全程没有触发空格判断,
largest始终为初始值0 - 最长单词在句尾时,该单词的长度不会参与对比,最终返回的是前面所有单词的最长长度
修复方法
只需要在for循环结束后,额外增加一次当前累计单词长度和历史最长值的对比即可,修复后的代码如下:
let lettCount = 0; let largest = 0; let spaceCheck = /\s/; for(let i = 0; i < str.length; i++) { if(spaceCheck.test(str[i])) { if(lettCount > largest) { largest = lettCount; } lettCount = 0; } else { lettCount++; } } // 新增逻辑:对比最后一个单词的长度 if(lettCount > largest) { largest = lettCount; } return largest;
内容的提问来源于stack exchange,提问作者chris10
相关产品推荐
相关产品推荐

