在一个字符串中只包含有数字和大小写字母,求出该字符串中出现次数最多的数字的和,例如输入字符串“Ae5a2sd35s4eEe62a35e1ao”,输出结果:70
5 回答
白绿色
TA贡献3条经验 获得超11个赞
private static void test() { String ss = "Ae5a2sd35s4eEe62a35e1ao"; Pattern p=Pattern.compile("(\\d+)"); // 使用正则表达式取出所有数字 Matcher m=p.matcher(ss); Map<Integer, Integer> cc = new HashMap<Integer, Integer>(); // 统计所有数字的出现次数。数字为key,出现次数为value存入map while(m.find()){ int i = Integer.valueOf(m.group(1)); if(cc.containsKey(i)) { cc.put(i, cc.get(i) + 1); }else { cc.put(i, 1); } } // 找到map中最大的value,即最大的出现次数,它对应的key则为出现最多的数字 // 可能不止一个,使用循环找出所有出现最多的数字。如果都只出现1次则全部找出 int max = Collections.max(cc.values()); for(Entry<Integer, Integer> entry : cc.entrySet()) { if(entry.getValue() == max) { System.out.println(entry.getKey() + "为出现最多的数,出现次数为" + entry.getValue() + ". 和为" + entry.getKey() * entry.getValue()); } } }
添加回答
举报
0/150
提交
取消