您的位置:首页 > 其它

找出字符串中重复的字符 打印出来

2011-08-16 22:23 260 查看
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);
}
}


如何还有简单的算法 请帮忙提出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐