查找字符串最长连续A子串的方法及Java代码输出n-1问题排查
Java最长连续'A'子串代码bug排查
核心错误原因
- 非'A'字符处理逻辑错误:遇到非'A'时执行
count--而非重置count为0,连续多个非'A'会让count变为负数,后续统计'A'时计数起点低于实际值,最终结果偏小。 - max值更新逻辑错误:只要遇到'A'就直接覆盖
max值,后续出现更短的连续'A'序列会把之前记录的更大的最长长度覆盖,丢失正确统计结果。
修复后的完整代码
import java.util.Scanner; public class MaxContinuousA { public static void main (String[] args) { Scanner s=new Scanner(System.in); String str=s.nextLine(); int size=str.length(); int count=0,max=0; for(int i=0;i<size;i++) { if(str.charAt(i)=='A') { count++; // 仅当当前连续长度超过已记录最大值时才更新max if(count > max) { max = count; } } else { // 遇到非A直接重置连续计数为0 count = 0; } } System.out.print(max); } }
验证说明
输入测试用例AAABBBBBAAAAAA时,修复后的代码统计到最后6个连续'A',count累加至6时更新max为6,输出结果与预期一致。
内容的提问来源于stack exchange,提问作者Shubhamsingh Thakur
相关产品推荐
相关产品推荐

