使用Java中的哈希映射来查找字符串中字符的频率

问题描述 投票:-1回答:2

我正在尝试制作一个字谜程序,在该程序中,我将哈希映射的所有键集与其值进行匹配。但是我的代码似乎没有计算第一个字符以外的字符。


**String a="aabbcc";
    HashMap<Character,Integer> map= new HashMap<Character, Integer>();
    for(int i=0;i<a.length();i++)
    {
        if(map.containsKey(a.charAt(i)))
        {
            int n= map.get(a.charAt(i))+1;
           map.put(a.charAt(i), n);
        }

        else
        {
            map.put(a.charAt(i), 0);
        }
    }
        System.out.println(map);**

输出:{a = 1,b = 1,c = 1}

java string hashmap frequency anagram
2个回答
0
投票

问题出在map.put(a.charAt(i), 0)。 0应该是1,因为当您第一次找到一个字符时,计数是1。


0
投票

当然,您会得到这个结果:)

每个字符a,b,c在您的字符串中显示2次。现在,例如,对于第一个“ a”,您将进入else分支,因为它尚未包含在地图中。因此,a将被映射到0。然后,对于字符串中的第二个“ a”,您将进入if分支,因为键a已存在于映射中。并且0将增加到1。最后,您将a映射到1。与b和c相同:)

© www.soinside.com 2019 - 2024. All rights reserved.