题目链接
题目描述
实现代码
个人代码,未AC,因为在力扣的编译器中没法使用StringTokenizer:
class Solution {public String mostCommonWord(String paragraph, String[] banned) {Map<String, Integer> map = new HashMap<>(paragraph.length());StringTokenizer tokenizer = new StringTokenizer(paragraph, " ");Set<String> container = new HashSet<>();for(String s : banned) {container.add(s);}int max = 0;String result = null;while (tokenizer.hasMoreTokens()) {String token = tokenizer.nextToken().replaceAll("[^a-zA-Z]", "").toLowerCase();if(container.contains(token)){continue;}Integer count = map.get(token);Integer newCount = (count == null ? 1 : count+1);map.put(token, newCount);if(max < newCount) {max = newCount;result = token;}}return result;}}
官方实现代码:
class Solution {public String mostCommonWord(String paragraph, String[] banned) {Set<String> bannedSet = new HashSet<String>();for (String word : banned) {bannedSet.add(word);}int maxFrequency = 0;Map<String, Integer> frequencies = new HashMap<String, Integer>();StringBuffer sb = new StringBuffer();int length = paragraph.length();for (int i = 0; i <= length; i++) {if (i < length && Character.isLetter(paragraph.charAt(i))) {sb.append(Character.toLowerCase(paragraph.charAt(i)));} else if (sb.length() > 0) {String word = sb.toString();if (!bannedSet.contains(word)) {int frequency = frequencies.getOrDefault(word, 0) + 1;frequencies.put(word, frequency);maxFrequency = Math.max(maxFrequency, frequency);}sb.setLength(0);}}String mostCommon = "";Set<Map.Entry<String, Integer>> entries = frequencies.entrySet();for (Map.Entry<String, Integer> entry : entries) {String word = entry.getKey();int frequency = entry.getValue();if (frequency == maxFrequency) {mostCommon = word;break;}}return mostCommon;}}
