Title:Most Common Word 819
Difficulty:Easy
原题leetcode地址: https://leetcode.com/problems/most-common-word/
1. 见代码注释
时间复杂度:O(n),两次一层for循环。
空间复杂度:O(n),申请了Set,Map,最长是字符串字符的长度。
/**
* 存放map中,注意banned中可能不是一个字符串
* @param paragraph
* @param banned
* @return
*/
public static String mostCommonWord(String paragraph, String[] banned) {
Set<String> bannedSet = new HashSet<>();
for (String ban : banned) {
bannedSet.add(ban);
}
Map<String, Integer> map = new HashMap<>();
String result = "";
int resultFreq = 0;
StringBuilder sb = new StringBuilder();
paragraph = paragraph + ".";
for (char c : paragraph.toCharArray()) {
if (Character.isLetter(c)) {
sb.append(Character.toLowerCase(c));
}
else if (sb.length() > 0) {
String sbWord = sb.toString();
if (!bannedSet.contains(sbWord)) {
map.put(sbWord, map.getOrDefault(sbWord, 0) + 1);
if (map.get(sbWord) > resultFreq) {
result = sbWord;
resultFreq = map.get(sbWord);
}
}
sb = new StringBuilder();
}
}
return result;
}