题目:
"aabcbdeeeeedbddcc",获取字符串中每一个字母出现的次数
要求结果:a(2)b(3)c(3)d(4)e(5)
分析:
1. 每个字母和出现的次数是一一对应的关系,所以我们应该想到的是Map的双列集合
2. 因为从结果看打印字母的顺序都有序,所以可以使用map集合中的TreeMap集合
思路:
1.
import java.util.Set;
import java.util.TreeMap;
public class Collection {
public static void main(String[] args) {
String st = "aabcbdeeeeedbddcc";
TreeMap<Character, Integer> tr = new TreeMap<Character, Integer>
char[] s = st.toCharArray();
for (int i = 0; i < s.length; i++) {
Integer in = tr.get(s[i]);
if (in == null) {
tr.put(s[i], 1);
} else {
in++;
tr.put(s[i], in);
}
}
StringBuffer buf = new StringBuffer();
Set<Character> set = tr.keySet();
for (Character d: set) {
Integer value = tr.get(d);
buf.append(d).append("(").append(value).append(")");
}
System.out.println(buf);
}
}
将字符串变成字符数组,因为要操作字符串中的每一个字母
2. 遍历数组,将每一个字母都作为键去map集合中获取值
3. 如果获取的值为null,说明该键不存在,就将该键和1存入到集合中,如果该值不为null,说明该键已经存在于map集合,并有对应的值,那么就将值该值取出,并自增后,再将该键和新的值存入map集合中,因为键相同,新值会覆盖老值
4. 遍历结束map集合中就已经具备了每一个字母对应的次数
5. 将集合中的数据变成字符串打印