通过键盘输入一串只由字母组成的字符串。
统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。
例如字符串"aaddyyyssaabb"归一化后为"a4b2d2s2y3"
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("请输入字符串");
Scanner sc = new Scanner(System.in);
String str= sc.next();
System.out.println("输入的字符串是:"+str);
Map<String, Integer> map = new HashMap<String, Integer>();
for (int i=0;i<str.length();i++) {
String aa = str.substring(i, i+1);
if(map.get(aa)==null) {
map.put(aa, 1);
}else {
Integer value = map.get(aa);
map.put(aa, value+1);
}
}
Collection<String> keyset= map.keySet();
List<String> list = new ArrayList<String>(keyset);
//对key键值按字典升序排序
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+""+map.get(list.get(i)));
}
sc.close();
}
}
运行结果
请输入字符串
aaddyyyssaabb
输入的字符串是:aaddyyyssaabb
a4b2d2s2y3