Я думаю, что вы запутались в своей программе, поскольку у вас есть unnnecessary loops
, который увеличивает сложность, и if-else ladder
, который сравнивает символы, которые вы не можете отследить в своем уме (в этом вам может помочь debugging
) .
Я не понимаю, какой вариант использования вы пытаетесь пройти, но если вы хотите именно то, что вы упомянули выше, то следующий фрагмент кода сделает это за вас.
Note:
Я принял во внимание только основные сценарии. Для большого количества тестовых случаев могут потребоваться небольшие изменения.
public class Demo {
public static String compress(String original){
int count = 0;
char temp = original.charAt(0);
StringBuilder sb = new StringBuilder("");
for(int i=0;i<original.length();i++) {
if(original.charAt(i)==temp) {
count++;
}else {
if(count!=1)
sb.append(count).append(temp);
else
sb.append(temp);
count=1;
temp=original.charAt(i);
continue;
}
}
if(count!=1)
sb.append(count).append(temp);
else
sb.append(temp);
//Above four lines get last character
//and its occurrence if it's more than 1.
return sb.toString();
}
public static void main(String args[]) {
System.out.println(compress("ttttesst"));
//Enter desired String value here.
//Also you may make it user-interactive.
}
}
Также вы можете ссылаться на следующие ссылки,
Подсчет количества появлений символов и Реализация HashMap и Хеширование используется для подсчета появления символа , чтобы лучше понять, как подходить к таким проблемам.
Надеюсь, это поможет!