JAVA如何找出字符串中出现最多的字母

例如 String str="abcabcabcaaaaa";
如何找出出现最多的字母?用代码实现

哪位高手帮小弟看下 谢谢

import java.util.HashMap;
import java.util.Map;
public class RemoveMostWords
{
public static void main(String[] args)
{
String str = "addcbbs";
System.out.println("处理前的字符串:" + str);
String deelStr = removeMostWords(str);
System.out.println("处理后的字符串:" + deelStr);
}
private static String removeMostWords(String str)
{
if (null == str || "".equals(str))
{
return str;
}
//初始化最大次数为2次
int iMax = 2;
//将所有的字符与出现的次数作为一个键值对
Map<Character, Integer> timeMap = new HashMap<Character, Integer>();
Character cTmp;
Integer iTmp;
for (int i = 0; i < str.length(); i++)
{
cTmp = str.charAt(i);
iTmp = timeMap.get(cTmp);
//首次出现的字符,不需要比较
if (null == iTmp)
{
timeMap.put(cTmp, 1);
continue;
}
//出现次数+1,放入map
iTmp = iTmp + 1;
timeMap.put(cTmp, iTmp);
//若超过最大次数,则替换最大次数
iMax = iMax < iTmp ? iTmp : iMax;
}
//将所有达到最大次数的字符替换成空
for (Map.Entry<Character, Integer> entry : timeMap.entrySet())
{
if (entry.getValue() == iMax)
{
str = str.replaceAll(String.valueOf(entry.getKey()), "");
}
}
return str;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-28
public class Text{
public static void main(String[] args) {
String str = "abcabcabcaaaaa";
char i[] = str.toCharArray();
int b[] = new int[i.length];
for(int x = 0;x<i.length;x++){
for(int j = x+1;j<i.length;j++){
if(i[x]==i[j]){
b[x]++;
}
}
}
int c[] = new int[i.length];
System.arraycopy(b,0,c,0,c.length);
java.util.Arrays.sort(b);
for(int d = 0;d<c.length;d++){
if(c[d]==b[b.length-1]){
System.out.println("出现最多的是=====》"+i[d]);
break;
}
}
}
}本回答被提问者采纳
第2个回答  2010-01-29
//楼上的程序是可用的,我有重写了个。如果字母出现的次数一样多,我这个可以都显示出来。

import java.util.HashMap;
import java.util.Set;

public class Text {
public static void main(String[] args) {
String str = "abcbcabhsdfsdfca";
char[] chars = str.toCharArray();
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int max = 0;
for (char c : chars) {
if (map.containsKey(c)) {
int oldnum = map.get(c);
map.put(c, oldnum + 1);
if (max < oldnum + 1)
max = oldnum + 1;
} else {
map.put(c, 1);
}
}
Set<Character> keys = map.keySet();
for (char c : keys) {
if (map.get(c) == max) {
System.out.println(c + "出现了" + map.get(c) + "次 * 次数最多 *");
} else {
System.out.println(c + "出现了" + map.get(c) + "次");
}
}
}
}
相似回答