Программа кодирования длин серий имеет номер перед буквой
Я делаю программу для кодирования длин серий, которая используется для сокращения слов. то есть aaabbc становится 3a2bc
Моя программа работает до сих пор, но вместо вывода 3a2bc она выполняет a3b2c. Итак, как я могу переключить мою текущую программу?
Код:
public class Compress {
public static void main(String[] args) {
String word = "aaabbc";
System.out.println(compress(word));
}
public static String compress (String original){
String compressed = "";
char ch = original.charAt(0);
int counter = 1;
for (int i = 1; i < original.length(); i++) {
if (ch == original.charAt(i)) {
counter = counter + 1;
}
else {
compressed = compressed + ch;
if(counter != 1){
compressed = compressed + counter;
}
ch = original.charAt(i);
counter = 1;
}
}
compressed = compressed + ch;
if(counter != 1){
compressed = compressed + counter;
}
return compressed;
}
}
1 ответ
Решение
Где у вас есть:
else {
compressed = compressed + ch;
if(counter != 1){
compressed = compressed + counter;
}
ch = original.charAt(i);
counter = 1;
}
Вы должны переключить первые два блока операторов, как
else {
if(counter != 1){
compressed = compressed + counter;
}
compressed = compressed + ch;
ch = original.charAt(i);
counter = 1;
}
Кстати, гораздо эффективнее использовать для этого StringBuilder, а не String