【发布时间】:2020-04-30 23:14:24
【问题描述】:
我有一个像 XXYYXYXYXZXZXXZXYXX 这样的字符数组,我想将它映射到 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 年:1 XY: 3 XZ:3
但它分配了以下值: XX: 2 年:4 XY: 3 XZ:?不可用
我对以下几行和几点表示怀疑:
1) 我尝试对 count freq[] 变量使用另一个循环值,例如“k”,并尝试将其计数在 0-9 之间,因为 18 个元素是 9 个两个字符元素:我尝试这样做,但没有有意义并抛出异常。
2)“0”部分添加到值的末尾:我尝试添加单独的 0 值并单独检查,例如array[i] != '0' && array[i+1] != '0'
那么,如何解决这个问题?
【问题讨论】:
标签: java hashmap linkedhashmap