Java实现hasRepeat方法检测连续重复字符测试失败如何解决
代码问题分析
你的代码存在两个核心错误,导致无重复字母的场景也返回true:
- 比较逻辑完全错误:
substring()是左闭右开的取值规则,当内层循环j = i + 1时,word.substring(i, j)实际和word.substring(i, i+1)取值完全一致,所以只要传入的字符串长度≥2,这个判断永远为真,直接返回true,根本不会判断字符是否真的重复。 - 逻辑冗余不符合需求:需求仅要求判断连续重复的字母,不需要双重循环遍历所有字符组合,只需要单次遍历对比相邻两个字符即可。
修复方案
首先处理边界条件:如果传入的字符串为null或者长度小于2,不可能存在连续两个重复字母,直接返回false;然后遍历字符串,逐个对比当前字符和后一个字符是否相等,只要出现相等的情况直接返回true,遍历完都没有符合条件的就返回false。
正确代码如下:
public static boolean hasRepeat(String word) { // 边界处理:空字符串或长度不足2直接返回false if (word == null || word.length() < 2) { return false; } // 单次遍历对比相邻字符 for (int i = 0; i < word.length() - 1; i++) { if (word.charAt(i) == word.charAt(i + 1)) { return true; } } return false; }
内容的提问来源于stack exchange,提问作者Suii1
相关产品推荐
相关产品推荐

