题解 | #统计一句话中重复单词的个数#
统计一句话中重复单词的个数
http://www.nowcoder.com/practice/2128e598b5a5407195c31175b5b33360
题目的主要信息:
- 统计输入的一句话中不同字母字符出现的次数
- 使用Map哈希表
具体做法:
既然使用哈希表,我们遍历字符串,对于每个字符,我们首先检查它是否是字母,如果是字母再考虑后续哈希表的行为,非字母跳过就行了。对于字母字符,我们在哈希表中查找它,然后将其value值增加1,如果找不到它就在哈希表中添加一项新的。
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(int i = 0; i < line.length(); i++){ //遍历字符串
char c = line.charAt(i); //对于每个字符
if(Character.isLetter(c)){ //首先检查是否是字母
if(map.containsKey(c)) //如果哈希表中有了这个字母
map.put(c, map.get(c) + 1); //该记录加1
else
map.put(c, 1); //否则加入一个新的记录
}
}
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
复杂度分析:
- 时间复杂度:,其中为字符串长度,遍历整个字符串
- 空间复杂度:,哈希表的大小最大为字符集即字母个数,属于常数空间
孤帆远影碧空尽 文章被收录于专栏
牛客网各类题单题解~
SHEIN希音公司福利 280人发布
