Подсчет повторений Буквы в строке


Дана строка. мы должны распечатать повторение письмо

Образец входного "aaaabbaac"

Пример вывода "4a2b2a1c"

public void continousWords(String input) {
String sample= input +" ";
String[] sampleList  =   sample.split("");
String temp = sampleList[0];
String result="";
int placeHolder=0;
for(int i=0;i<sampleList.length;i++){

    if(temp.equalsIgnoreCase(sampleList[i])) {
        placeHolder++;

    }
    else {
      result = result+placeHolder+temp;
      placeHolder =1;
      temp = sampleList[i];
    }

}
System.out.println(result);

}

Есть ли лучший способ подойти к проблеме



1211
2
задан 25 февраля 2018 в 10:02 Источник Поделиться
Комментарии
1 ответ

Этот метод не нуждается в каких-либо членом класса, поэтому он может быть declaced статическое.

Вы хотите посчитать repetation каждой буквы, а не частота в строку, не так ли? По крайней мере, вот что я понял из вашего примера результат 4a2b2a1c где a включен дважды. Если вы хотите, чтобы частота 6a2b1c алгоритм будет другой.

Альтернативный подход к вашему предложению будут конвертировать String в char массив и анализировать.

public static void continousWords(String input) {
char[] chars = input.toLowerCase().toCharArray();
StringBuilder b = new StringBuilder();

for (int i = 0, count; i < chars.length; i += count) {
count = 1;
while (i + count < chars.length && chars[i] == chars[i + count])
count++;
b.append(count).append(chars[i]);
}

String result = b.toString();
System.out.println(result);
}

1
ответ дан 25 февраля 2018 в 01:02 Источник Поделиться