不知道为什么我的代码不起作用。它不断返回值1而不是我期望的值。
public class Lab5Example
{
public static void main(String[] args)
{
System.out.println(longestRun("aabbbccd"));
System.out.println("Expected 3");
System.out.println(longestRun("aaa"));
System.out.println("Expected 3");
System.out.println(longestRun("aabbbb"));
System.out.println("Expected 4");
}
public static int longestRun(String s)
{
int count = 1;
int max = 1;
for (int i = 0; i < s.length() - 1; i += 1) {
char c = s.charAt(i);
char current = s.charAt(i + 1);
if (c == current) {
count += 1;
}
else {
if (count > max) {
count = max;
}
current = c;
}
}
return max;
}
}
调试器工作正常,所以我不知道什么不起作用。
答案 0 :(得分:2)
你想要这个:
if (count > max) {
max = count;
}
而不是:
if (count > max) {
count = max;
}
然后在返回之前添加此内容:
if(count > max)
{
max = count;
}
return max;
答案 1 :(得分:2)
我看到3个问题。
max = count
应为count = max
。这样你就可以存储到目前为止找到的最高分。
current = c
应为count = 1
。这样你就可以重置计数,开始计算下一个char序列。
在你的循环之外,你需要做最后的检查,看看最后一个char序列是否得分最高。 if(count > max) max = count;
这看起来都像:
for (int i = 0; i < s.length() - 1; i += 1) {
char c = s.charAt(i);
char current = s.charAt(i + 1);
if (c == current) {
count += 1;
}
else {
if (count > max) {
max = count; // #1
}
count = 1; // #2
}
}
if(count > max) // #3
max = count;
return max;