您的位置:首页 > 其它

时间:2014年4月11日18:46:07 完善用户注册

2014-04-11 22:59 211 查看
import java.util.*;
/* * 题目:求出现次数最多,且值最大的数字 * 思路:首先统计每个字符及其出现的次数,用到了hashMap * 其次,用hashSet统计不同的数字,并将统计的字符存到char数组中,以便判断 * 最后,用hashMap中的 get(key)方法 去寻找每个字符所对应的次数,输出次数最多,且值最大的字符 */public class FindString{ public static void main(String args[]){ String str="222aaaaassssstttt111"; //随便一个字符串 HashMap<Character,Integer> map=new HashMap<Character,Integer>(); int max; //最多次数 char[] ch=str.toCharArray(); //将字符串转换为字符数组 HashSet<Character> set=new HashSet<Character>(); for(int i=0;i<ch.length;i++){ Integer num=(Integer)map.get(ch[i]); // 找字符所对对应的次数 if(num==null){ num=0; } set.add(ch[i]); //将字符增加到set集合中 map.put(ch[i],num+1); //统计字符的次数,如果字符相同,num加1 } char[]c=new char[set.size()]; int i=0; Iterator<Character> it =set.iterator(); // set集合的迭代器 while(it.hasNext()){ c[i]=(Character)it.next(); //将不重复的字符增加到字符数组中 i++; } char m=c[0]; //假设第一个字符就是想要的 max=map.get(c[0]); //假设第一个字符对应的次数就是最大的 for(int j=1;j<c.length;j++){ if(max<=map.get(c[j]) & m<c[j]){ //max如果不是最大的 ,并且m对应的字符本身就小于后面的 max=map.get(c[j]); //将max换成较大的 m=c[j]; //并将所对应的字符max所对应的字符 }else if(m>c[j]){ //max对应的字符大于后面的 if(map.get(m)<map.get(c[j])){ //虽然m大于后面的,但是出现次数小于后面的,所以还得换 max=map.get(c[j]); m=c[j]; }else{ //其他的情况就不用换了 } } } System.out.println("出现次数最多,且值最大的是:"+m+",出现次数为:"+max); //输出字符 } }本文出自 “字符串、Map” 博客,请务必保留此出处http://dongxiao111.blog.51cto.com/2316565/532055
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐