Мне было поручено выполнить задание для моего класса на Java.Это в основном программа кодирования длины прогона, которая проходит через введенную строку и сжимает ее (например: aaaabbb становится a4b3)
Процесс:
Мой код проходит через каждый символво введенной строке и проверяет, равен ли исходный символ следующему символу.Если оно истинно, увеличивает счет и, наконец, объединяет счет и оригинальную букву .Если исходная буква не равна следующему символу - начинается отсчет с 1 и начинается новый цикл for.Если символы в цикле for равны символам в позиции i , то счетчик увеличивается до тех пор, пока следующая буква не станет равной предыдущей.Это повторяется до тех пор, пока все символы ввода не будут прочитаны.
Я попытался написать следующий код:
import java.util.Scanner;
class RLE {
RLE() {
Scanner sc = new Scanner(System.in);
String input = sc.next();
int count = 0;
for (char c : input.toCharArray()) {
if (input.charAt(0) == c) {
count++;
input = input.charAt(0) + Integer.toString(count);
}
else {
count = 1;
for (int i = 0; i < input.length(); i++) {
if (c == input.charAt(i)) {
count++;
}
}
input = input.concat(c + Integer.toString(count));
}
}
System.out.println(input);
}
}
Пример
Это был мойследующий ввод: aaabbbccc
фактический вывод : a3b1b2b3c1c2c3
предполагаемый вывод : a3b3c3
Может кто-нибудь объяснить, что такоеЯ делаю не так?Я попытался переделать код другим способом, но безуспешно.Моим лучшим предположением было бы то, что исходная строка ввода была расширена и, следовательно, расширила исходный цикл for, но это тоже может быть неправильно.Большое вам спасибо!