查找数组中元素之间的“距离”

时间:2017-09-30 18:15:08

标签: java arrays

我正在尝试解决自动密码并找到密钥长度,我需要找到密文中所有元素之间的“距离”。 我已经找到了阵列中所有元素之间的距离,但我现在想要一些方法来找到每次跳跃的频率。 因此,例如,如果我有一个字符串“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,频率

的表格

1 个答案:

答案 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);
            }
        }