首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java编码兑现一个字符串中出现最多字母的次数(只要求找出出现最多字母的次数,不需要找出具体字母)

2012-12-23 
java编码实现一个字符串中出现最多字母的次数(只要求找出出现最多字母的次数,不需要找出具体字母)如题,看

java编码实现一个字符串中出现最多字母的次数(只要求找出出现最多字母的次数,不需要找出具体字母)
如题,看有哪些实现方式更简便且效率高
[解决办法]
先抛个:



我在这边用HashMap实现一个吧,思路和1楼的差不多,只是能适用各种字符,各种数组,效率也蛮高的,不过效率上肯定没有1楼的高!(hashMap最快也要在数组索引上面,hash一把,和equal一把,所以效率肯定低于数组索引)
楼主参考参考:)


        String str = "jdsalfjaslnzdfuawoejlljafd";
        int max = 0;
        Map<Character, Integer> map = new HashMap<Character, Integer>(str.length());
        for(char chr : str.toCharArray()) {
            Integer i = map.get(chr);   
            int value = (i == null) ? 0 : i;  // 获取,没有则0,有则叠加
            map.put(chr, ++value);
            max = value > max ? value : max;  // 更新max
        }
        System.out.println(max);

[解决办法]
上代码吧
String str = "afdbsodfusdfalgaufaowejhnlgjaouowejhgajgabcdefghijklmnopqrstuvwxyz,./?'????????????????????????????????????????";
int[] sum = new int[52];
int max = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 65 && c <= 90)//A~Z


sum[c - 65]++;
else if (c >= 97 && c <= 122)//a~z
sum[c - 71]++;
else
continue;
}
for (int i = 0; i < sum.length; i++)
if (sum[i] > max)
max = sum[i];
System.out.println(max);


我的只不过是代码不好看。复杂度不见得高啊。

热点排行
Bad Request.