黑马程序员技术交流社区
标题:
分享一道入学测试题
[打印本页]
作者:
wk843620202
时间:
2015-4-28 16:16
提示:
该帖被管理员或版主屏蔽
作者:
1017161726
时间:
2015-4-28 16:49
这个老师讲过的啊。。
作者:
showdy
时间:
2015-4-28 22:24
package day0428;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;
/*
* 取出一个字符串中字母出现的次数。
* 如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
*/
public class Collection_11 {
public static void main(String[] args) {
//创建一个TreeMap集合,key位放字符,value放出现的次数
TreeMap<Character,Integer> tm= new TreeMap<Character, Integer>();
String s="abcdekka27qoq";
char[] chs=s.toCharArray();
//遍历数组,判断集合中是否含数组中的元素,不含,放入集合;含元素,key不变,value加1
for(char ch: chs){
Integer in= tm.get(ch);
if(in==null){
tm.put(ch,1);
}
else{
in++;
tm.put(ch, in);
}
}
// 拼接集合中key位和value位的元素
StringBuffer sb= new StringBuffer();
Set<Character> set= tm.keySet();
for(Character key: set){
Integer i= tm.get(key);
sb.append(key).append("(").append(i).append(")");
}
System.out.println(sb.toString());
}
}
复制代码
作者:
pizhihui
时间:
2015-6-7 11:11
用Map集合功能可以很方便的做这种题目,用其他的像数组和ArrayList集合也可以解决,只是逻辑很麻烦.这就是Java语言的强大啊!!
作者:
悦鹏
时间:
2015-6-7 11:45
这是基础班的吗?
作者:
路途遥远
时间:
2015-6-7 12:47
map 解决比较方便
作者:
edithe
时间:
2015-6-7 13:14
public static void main(String[] args) {
String str = "abcdekka27qoq";
//把字符串转换成字符数组
char[] buf = str.toCharArray();
//创建StringBuilder对象用来添加要输出的字符串
StringBuilder sb = new StringBuilder();
//遍历字符数组
for(int i = 0;i<buf.length;i++){
//定义count用来记录字符出现的次数
int count = 0;
//先判断sb中是否已有该字符,如果没有,则添加
String mark = buf[i]+"";
if(sb.indexOf(mark)<0){
//遍历字符数组,确定buf[i]出现的次数
for(int j = i;j<buf.length;j++){
if(buf[i] == buf[j]){
count++;
}
}
sb.append(mark+"("+count+")");
}
}
System.out.println(sb);
}
复制代码
作者:
Amu
时间:
2015-6-7 22:20
其实代码上加上对字母的判断最佳
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2