1. 第一种方法:
利用简单的计算
package com.first;
public class moreChar {
/**
* @param args
*/
public static void main(String[] args) {
String a = "aaabbbcccdddeee";
int sum [] = new int[10000];
for(int j=0; j<a.length(); j++)
sum[(int)a.charAt(j)]++;
int max = -1,csum=0;
Character c [] = new Character[a.length()];
for (int i = 0; i < sum.length; i++){
if(max < sum[i]){
max = sum[i];
c[csum++] =(char)i;
}else if(max == sum[i] && max !=0){
max = sum[i];
c[csum++] = (char)i;
}
}
System.out.println("次数为:"+max);
for (int i = 1; i < c.length; i++) {
if (c[i] != null)
System.out.println(c[i]);
}
}
}
2. 利用jdk中的容器
package com.first;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class mostchar {
public static void main(String[] args){
List list=new ArrayList();
Set set=new HashSet();
String s="aaabbbcccdddeee";
char[]arr=s.toCharArray();
Map map= new TreeMap();
for(int i=0;i<arr.length;i++){
Integer value=(Integer) map.get(arr[i]);
if(value==null)
map.put(arr[i], 1);
else
map.put(arr[i], (Integer)map.get(arr[i])+1);
}
for(int i=0;i<arr.length;i++){
if((Integer)map.get(arr[i])!=0){
// 把所有的value全部放在list中。
list.add((Integer)map.get(arr[i]));
//再对list进行排序,找到value最大的值即:list.get(list.size()-1)
Collections.sort(list);
// 过滤一下,让value最大的值,进入循环。
if((Integer)map.get(arr[i]) == list.get(list.size()-1)){
// 把对应的key放在set中,为了使防止重复。
set.add(arr[i]);
}
}
}
Iterator ite=set.iterator();
while(ite.hasNext()){
System.out.println(ite.next());
}
}
}
或者:
package com.first;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class mostchar2 {
public static void main(String[] args){
String s="aaabbbcccdddeee";
char[]arr=s.toCharArray();
Map map =new TreeMap();
int max=1;
List<Character> maxs = new ArrayList<Character>(); //字符数组
for(int i=0;i<arr.length;i++){
Integer value= (Integer)map.get(arr[i]);
if(value==null|| value.equals("")|| value==0){
map.put(arr[i], 1);
}else{ //如果已经存在这么一个key
map.put(arr[i],(Integer)map.get(arr[i])+1);
if(max <(Integer)map.get(arr[i])){
max=(Integer)map.get(arr[i]);
maxs.removeAll(maxs);
maxs.add(arr[i]);
}else if(max == (Integer)map.get(arr[i])){
maxs.add(arr[i]);
}
}
}
for(Character s1:maxs)
System.out.println(s1);
}
}
如何还有简单的算法 请帮忙提出来
本文介绍两种方法来找出给定字符串中最常出现的字符及其出现次数。第一种方法通过简单计数实现,第二种方法则利用Java集合框架进行高效处理。
349

被折叠的 条评论
为什么被折叠?



