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);
}
}
相关文章推荐
- 编程练习2----字符串操作(重复字符检查)
- java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
- Map实现字符串内重复字符数的计算(Java之二)
- 日常练习:lintcode 157. 判断字符串是否没有重复字符
- C#练习——去掉字符串两端的空格、统计字符出现的次数及出现的索引位置、随机生成10个1-100之间的不重复的偶数
- 查找字符串中最长重复字符的子串
- leetcode Longest Substring Without Repeating Characters 没有重复字符的最长子字符串
- ios 开发中获取字符串中重复的字符的range
- 字符串中不重复字符的最长子串
- 用java实现输出字符串中第一个出现不重复的字符
- 字符串的第一个不重复字符
- 练习:字符串中字符出现次数
- [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串
- 求字符串内不包含重复字符的最长子串的集合
- 字符串中各类字符统计的小练习
- 统计字符串中重复的字符个数并输出
- LintCode-判断字符串是否没有重复字符
- 【数据结构】中删除小写字母字符串中重复字符
- 去除字符串中重复出现的字符
- 求一字符串最长不重复字符子串的长度【Java 版】