黑马程序员技术交流社区
标题:
字符串
[打印本页]
作者:
何向阳
时间:
2012-12-16 09:50
标题:
字符串
给定一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
作者:
张辉2012
时间:
2012-12-16 13:31
此题的思路理解为
遍历字符串,使用charAt(int index)方法。
因为要计算每个字符出现的次序,所以我推荐放到一个储存不重复集合中去,所以选择了HashMap ,通过键值对,出现的字符设置为键值唯一不重复,第一次出现该字符创建一个该字符的键,值为1,若不是第一次出现,值+1.
最后遍历集合,找到最大值,求出它所对应的key与value。
具体代码我写写看,希望能帮到你!{:soso_e100:}
作者:
张辉2012
时间:
2012-12-17 19:58
昨天忘记做了,今天来补上
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Demo5 {
/**
*
* 给定一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
*/
public static void main(String[] args) {
TreeMap<Character,Integer> hm=new TreeMap<Character,Integer>();//构造一个有序集合TreeMap
String str="asdjkasojd8 asd,./';'][[':::lmcsuijhwiodasfhjkbg";
int leng=str.length(); //避免每次for循环计算字符串长度
for(int i=0;i<leng;i++){ //遍历字符串
char key=str.charAt(i);
Integer value=hm.get(key);
if(value==null){ //如果该字符没有出现,将值value设置为1
hm.put(key,1); //自动装箱为Character与Integer
}else{
value++;
hm.put(key,value); //键所对应的值+1
}
}
//将所有出现的字符存入TreeMap后,开始便利TreeMap查找字符最多出现的次数
Set<Map.Entry<Character, Integer>> set=hm.entrySet();
Iterator<Map.Entry<Character, Integer>> it=set.iterator();
int maxValue = 0; //初始化最大键
char maxKey = 0 ; //初始化最大值
while(it.hasNext()){ //遍历TreeMap查找最大键值对
Map.Entry<Character, Integer> me=it.next();
char key=me.getKey();
int value=me.getValue();
if(value>=maxValue){
maxValue=value;
maxKey=key;
}
System.out.println(key+"出现"+value+"次"); //输出个个字符出现的次数
}
System.out.println("最多出现的字符时"+maxKey + ",它出现的次数为" + maxValue);//输出最大键值对
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2