黑马程序员技术交流社区
标题:
取出一个字符串中字母出现的次数。如:字符串:"abcdekka27...
[打印本页]
作者:
y506798278
时间:
2016-7-11 10:42
标题:
取出一个字符串中字母出现的次数。如:字符串:"abcdekka27...
public class Demo1 {
public static void main(String[] args){
String str = "asgsadgfasdgfasdf6565465";
String char_count = getCharCount(str);
System.out.println(char_count);
}
public static String getCharCount(String str) {
char[] chs = str.toCharArray(); //将字符串转成字符数组
Map<Character,Integer> map = new TreeMap<Character,Integer>(); //定义map集合
for (int i = 0; i < chs.length; i++) { //遍历字符数组,获取每一个字母
if(!(chs[i] >= 'a' && chs[i] <= 'z')){ //过滤掉非字母字符
if(!(chs[i] >= 'A' && chs[i] <= 'Z')){
continue;
}
}
Integer value = map.get(chs[i]); //将遍历到的字母作为键去查表,获取值
int count = 0; //用于记录次数
if(value != null){ //判断次数是否存在
count = value; //存在,就用count记录次数
}
count++; //次数不存在,就不记录,只对count自增变成1
map.put(chs[i], count); //将字符和次数进行存储
}
return toString(map);
}
public static String toString(Map<Character, Integer> map) {
StringBuilder sb = new StringBuilder(); //使用缓冲区
Set<Character> keySet = map.keySet(); //将map集合转变成set集合
for (Iterator<Character> it = keySet.iterator(); it.hasNext();) { //通过迭代器,取出map集合中的元素
Character key = it.next();
Integer value = map.get(key);
sb.append(key+"("+value+")");
}
return sb.toString();
}
}
作者:
y506798278
时间:
2016-7-11 10:44
//一楼这个是复制的别人的,感觉抄袭不太好,贴出自己的来
public class Demo1 {
public static void main(String[] args) {
String str = "asdf654654asdfasdfzzzzz24";
counter(str);
}
public static void counter(String str) {
//1.获取一个字符串,并将字符串转换成字符数组
char[] arr = str.toCharArray();
//2.定义一个Map集合对象,并过滤字符数组中的字母,将字母装进Map集合中
Map<Character, Integer> map = new TreeMap<>();
for(int i = 0; i < arr.length; i++) {
if((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] >= 'A' && arr[i] <= 'Z')) {
//3.如果Map集合中没有这个字母,就存入键为这个字母,值为1;如果Map集合中有这个键,则值加1
if(!map.containsKey(arr[i])) {
map.put(arr[i], 1);
} else {
map.put(arr[i], map.get(arr[i]) + 1);
}
}
}
//4.遍历集合,取出键值
for(Character ch : map.keySet()) {
System.out.println(ch + "(" + map.get(ch) + ")" ); ;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2