每天一道编程题(二)------求字符串中个数最多的字符串的个数,并打印

本文探讨了如何使用Java集合框架解决字符串中的字符计数与查找最频繁字符的问题,包括数组转换、TreeSet与ArrayList的应用,以及通过HashMap实现频率统计与最大值查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个字符串,找出其中相同字符的个数,打印出最多的字符串。一个字符串中可能包含a~z中的多个字符,如有重复,如Stringdata="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。〔金山公司面试题〕

(起初做这道题的时候存储在数组里,来实习公司,一老大说,一般这种求字符串的题目而且在java中一般是考你集合的知识,后来一看网上的解答,果真都是这样,而且时间复杂度小)把自己写的一个程序传了上来希望有人能有更好地方法

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;








public class FindRepeat {
  public static void doString(String str){
	  char[] array=str.toCharArray();
	  ArrayList list=new ArrayList();
	  TreeSet set=new TreeSet();
	  for(int i=0;i<array.length;i++){
		  list.add(String.valueOf(array[i]));
		  set.add(String.valueOf(array[i]));
	  }
	Collections.sort(list);
	System.out.println("list获得的值为:"+list);
	System.out.println("set获得的值为:"+set);
	StringBuffer sb=new StringBuffer();
	for(int i=0;i<list.size();i++){
		sb=sb.append(list.get(i));
	}
	str=sb.toString();
	int max=0;
	HashMap hm=new HashMap();
	for(Iterator itss=set.iterator();itss.hasNext();){
		String os=(String)itss.next();
		int begin=str.indexOf(os);
		int end=str.lastIndexOf(os);
		int value=end-begin+1;
		hm.put(os,value);
		if((value>max)&&(value>1)){
			max=value;
		}
	}
	Set set2=hm.entrySet();
	Iterator iterator=set2.iterator();
    while(iterator.hasNext()){
    	Map.Entry mapentry=(Map.Entry)iterator.next();
		if(mapentry.getValue().equals(max)){
			System.out.println("最多的字符串为:"+mapentry.getKey());
			System.out.println("最多的次数为:"+max);
		}
	
    }
  }
  public static void main(String[] args){
	  String strInput = new String("aavzcadfdsfsdhshgWasdfasdf");
	  doString(strInput);
  }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值