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

本文介绍两种方法来找出给定字符串中最常出现的字符及其出现次数。第一种方法通过简单计数实现,第二种方法则利用Java集合框架进行高效处理。

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


 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值