class Solution { public String mostCommonWord(String paragraph, String[] banned) { paragraph += "."; Set banset = new HashSet(); for (String word: banned) banset.add(word); Map count = new HashMap(); String ans = ""; int ansfreq = 0; StringBuilder word = new StringBuilder(); for (char c: paragraph.toCharArray()) { if (Character.isLetter(c)) { // word word.append(Character.toLowerCase(c)); } else if (word.length() > 0) { // punctuation symbols // node that word length should be larger than 0 String finalword = word.toString(); if (!banset.contains(finalword)) { count.put(finalword, count.getOrDefault(finalword, 0) + 1); // Record max here if (count.get(finalword) > ansfreq) { ans = finalword; ansfreq = count.get(finalword); } } word = new StringBuilder(); } } return ans; } }