锁定老帖子 主题:面试题目
精华帖 (0) :: 良好帖 (0) :: 新手帖 (16) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-27
如果出现字母次数最多的是多个字母呢?
好些人把这种情况给忽略了 |
|
返回顶楼 | |
发表时间:2009-11-27
最后修改:2009-11-27
String str = "qqqqqaaaaa11aaxxrrrrrrr";// 需要统计的字符串 |
|
返回顶楼 | |
发表时间:2009-11-29
用数据库的方法可以解决,先每一个字母一个个插入数据库,然后按字母名称count() group by下,就知道那个字母出现次数最多了
|
|
返回顶楼 | |
发表时间:2009-12-02
最后修改:2009-12-02
一个时间复杂度为n的算法,可能代码有点多。 呵呵,以可读性换取代码长度,应该还是值得的。
import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; public class TestClass { public static void main(String[] args) { HashMap<Character, Integer> map = new HashMap<Character, Integer>(); String str = "aabbccbddeeaabbdflksajfldsjal;fjdl;skajlfdjs;lajflueiowjfldskj"; int len = str.length(); for (int i = 0; i < len; i++) { char c = str.charAt(i); if (map.containsKey(c)) { map.put(c, map.get(c) + 1); } else { map.put(c, 1); } } // 得到最大的出现次数 int maxValue = 0; for (Iterator<Entry<Character, Integer>> iter = map.entrySet() .iterator(); iter.hasNext();) { Entry<Character, Integer> entry = iter.next(); int value = entry.getValue(); if (value >= maxValue) { maxValue = value; } } //取出出现次数最多的字母和对应的次数 for (Iterator<Entry<Character, Integer>> iter = map.entrySet() .iterator(); iter.hasNext();) { Entry<Character, Integer> entry = iter.next(); char key = entry.getKey(); int value = entry.getValue(); if (value == maxValue) { System.out.println("出现次数最多的字母为:" + key + " 出现次数为:" + value); } } } } 输出结果为:
出现次数最多的字母为:a 出现次数为:8 出现次数最多的字母为:l 出现次数为:8 出现次数最多的字母为:j 出现次数为:8
|
|
返回顶楼 | |