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

来源:互联网 发布:攻击网站软件 编辑:程序博客网 时间:2024/06/11 23:30

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);  }}


 

如何还有简单的算法 请帮忙提出来 

原创粉丝点击