У меня есть массив символов, например, XXYYXYXYXZXZXZXYXX, и я хочу сопоставить его с LinkedHashMap двумя двумя символами, как показано ниже:
public LinkedHashMap<String, Integer> convert(char[] array) {
LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
int[] freq = new int[array.length];
int i, j;
for (i = 0; i < array.length; i+=2) {
freq[i] = 1;
for (j = i + 2; j < array.length; j+=2) {
if (array[i] + array[i+1] == array[j] + array[j+1]) {
freq[i]++;
array[j] = '0'; //flag to check if it is already printed
array[j+1] = '0'; //flag to check if it is already printed
}
}
}
for (i = 0; i < freq.length; i+=2) {
if (array[i] + array[i+1] != ' ' && array[i] != '0') {
String dublex = ""+ array[i] + array[i+1];
hmap.put(dublex, freq[i]);
}
}
return hmap;
}
Обычно в нем должны быть следующие значения: XX: 2 YY: 1 XY : 3 XZ: 3
Но ему присваиваются следующие значения: XX: 2 YY: 4 XY: 3 XZ:? недоступно
Я сомневаюсь в следующих строках и точках:
1) Я попытался использовать другое значение l oop, например "k", для переменной count freq [] и попытался подсчитать это между 0-9, так как 18 элементов - это 9 двухсимвольных элементов: я пытался сделать это, но не имеет смысла и выбрасывает исключение.
2) "0" части добавлены в конец значений: Я пытался добавить отдельные 0 значений и проверить отдельно, например array[i] != '0' && array[i+1] != '0'
Итак, как решить проблему?