题意整理。
- 输入一段字符串,统计各个字符出现的次数,只统计大小写字母类型的字符。
方法一(哈希表)
1.解题思路
- 遍历输入的字符串。
- 如果是大小写字母,则作为键添加到map,并将出现次数作为键对应的值存到map。
动图展示:
2.代码实现
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
//遍历输入的字符串
for(char c:line.toCharArray()){
//如果是大写或小写字母,则添加到map中,并将出现次数作为键对应的值存到map
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
map.put(c,map.getOrDefault(c,0)+1);
}
}
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
3.复杂度分析
- 时间复杂度:假设输入字符串长度为n,最多有n次put操作,所以时间复杂度为。
- 空间复杂度:需要额外大小为n的哈希表,所以空间复杂度为。