我正在尝试解决自动密码并找到密钥长度,我需要找到密文中所有元素之间的“距离”。 我已经找到了阵列中所有元素之间的距离,但我现在想要一些方法来找到每次跳跃的频率。 因此,例如,如果我有一个字符串“ababbababba”并且希望使用a,则跳跃的频率为1,跳跃的频率为2。
for(int i = 1; i<cipher2.length(); i++ ){
if(cipher2Array[i] == 'f') {
arrayList.add(i);
int jumpDistance = arrayList.get(i) - arrayList.get(i-1);
}
}
所以基本上从这里开始,使用我的jumpDistance变量,我会怎么样
if(jumpDistance == theSameinAnyOtherPlaceOfArray) {
counter++;
}
输出一种带有jumpSize,频率
的表格答案 0 :(得分:0)
您需要HashMap<Integer, Integer>
。您可以将jumpSize
存储为关键字,将相应的frequency
存储为值。
然而,如果你想要一次性消除多个角色,你需要一个嵌套的地图,即@SAM建议的每个角色Map<Character, Map<Integer, Integer>>
的地图。
Map<Integer, Integer> counter = new HashMap<Integer, Integer>();
for(int i = 1; i<cipher2.length(); i++ ){
if(cipher2Array[i] == 'f') {
arrayList.add(i);
int jumpDistance = arrayList.get(i) - arrayList.get(i-1);
Integer freq = counter.get(jumpdistance);
freq = freq == null ? 1 : freq+1;
counter.put(jumpDistance, freq);
}
}