Инициализировать 2d массив с [длинна == кол-ву уникальных символов в строке] [счеткчик уникальных символов ]
Уже который день бьюсь над данным заданием , но ввиду отсуствия квалификации не могу сформировать верное решение данного задания.Регулярные вырадения юзать нельзя. Мой код:
public static int[][] charEntries(String string) {
int counter[] = new int[127];
int l = string.length();
for (int i = 0; i < l; i++)
counter[string.charAt(i)]++;
char array[] = new char[string.length()];
for (int i = 0; i < l; i++) {
array[i] = string.charAt(i);
int flag = 0;
for (int j = 0; j <= i; j++) {
if (string.charAt(i) == array[j])
flag++; }
if (flag == 1) {
int[][]five=new int[string.length()][2];
five[0][0] = string.charAt(i);
five[0][1]=counter[string.charAt(i)];
System.out.println(five[0][0]+"|"+ five[0][1]);
}
}
return null;
}
Ответы (1 шт):
Автор решения: Alexey R.
→ Ссылка
Насколько я понял задачу, её можно разными способами решить. Скорее всего, тот, кто её задал, ожидает решение определенным способом. Я предлагаю такой:
public int[][] getGrouping(String input){
String unique = "";
for(char symbol: input.toCharArray()){
if(!unique.contains(String.valueOf(symbol))){
unique = unique + symbol;
}
}
int[][] result = new int[unique.length()][2];
for(int i = 0; i < result.length ; ++i){
for(int j = 0; j < 2; j++){
result[i][j] = -1;
}
}
for(char ch: input.toCharArray()){
for(int i = 0; i < result.length; i++){
if(result[i][0] == ch){
result[i][1]++;
break;
}else if(result[i][0] == -1){
result[i][0] = ch;
result[i][1] = 1;
break;
}
}
}
return result;
}
Используем дополнительную строку для получения списка уникальных символов. Затем создаем массив и инициализируем его не "символьными" значениями. Затем заполняем.