这段代码可以正常运行,但我正在寻找一种优化方法。如果你查看长字符串,你会发现 'l' 连续出现了五次。没有其他字符连续出现这么多次。因此,输出结果为5。现在的问题是这种方法检查每个字符,即使找到最大值后,它仍会继续检查其余字符。有更有效率的方法吗?
public class Main {
public static void main(String[] args) {
System.out.println(longestStreak("KDDiiigllllldddfnnlleeezzeddd"));
}
private static int longestStreak(String str) {
int max = 0;
for (int i = 0; i < str.length(); i++) {
int count = 0;
for (int j = i; j < str.length(); j++) {
if (str.charAt(i) == str.charAt(j)) {
count++;
} else break;
}
if (count > max) max = count;
}
return max;
}
}
max > str.length()-i
),您可以停止。 - Arnaud