Не знаю, почему мой код не работает. Он продолжает возвращать значение 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;
}
}
Отладчик работает неправильно, поэтому я понятия не имею, что не работает.
Почему вы думаете, что отладчик не работает? –
Вы инициализируете 'max' как' 1', никогда не изменяете его, а затем возвращаете; он не мог вернуть ничего, кроме '1'. – resueman
Похож на комбинацию того, что вы не устанавливаете 'max' правильно (вообще), а также' count' необходимо сбросить в какой-то момент, иначе вы будете подсчитывать все повторяющиеся символы в строке, а не считать самую длинную последовательность данного символа в ряд. –