您的位置:首页 > 其它

Map练习(计数字符串中重复字符)

2018-01-19 12:14 148 查看

#日常练习

要求:找出一字符串中相同字符的个数,
 例如:str = "ababac",结果应当为a(3) b(2) c(1)
 思路:    由结果看出存在对应关系,所以采用TreeMap存储,
         将字符串转化为字符数组,拿逐个字符到集合中查询是否包含
         若包含则将Value值取出自增后放回
         若不包含则存入(arr[i],1)package Map;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

/*
* 要求:找出一字符串中相同字符的个数,
* 例如:str = "ababac",结果应当为a(3) b(2) c(1)
* 思路: 由结果看出存在对应关系,所以采用TreeMap存储,
* 将字符串转化为字符数组,拿逐个字符到集合中查询是否包含
* 若包含则将Value值取出自增后放回
* 若不包含则存入(arr[i],1)
* */

public class HashMapTest2 {
public static String count(String str) {
char[] arr = str.toCharArray();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

for (int i = 0; i < arr.length; i++) {

Set<Character> keySet = tm.keySet();
if (keySet.contains(arr[i]))
tm.put(arr[i], (Integer)tm.get(arr[i])+1);
else {
tm.put(arr[i], 1);
}
}
Set<Character> keySet = tm.keySet();
StringBuilder sb = new StringBuilder();//转存储
for (Iterator<Character> it = keySet.iterator(); it.hasNext();) {
Character c = it.next();
sb.append(c + "(" + tm.get(c) + ")");

}
return sb.toString();

}

public static void main(String[] args) {
String str = "bbcacbda";
str = count(str);
System.out.println(str);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: