Go•most-common-word/solution.go
package main
import (
"strings"
"unicode"
)
func mostCommonWord(paragraph string, banned []string) string {
blocked := map[string]bool{}
for _, word := range banned {
blocked[word] = true
}
counts := map[string]int{}
answer, best := "", 0
words := strings.FieldsFunc(strings.ToLower(paragraph), func(character rune) bool { return !unicode.IsLetter(character) })
for _, word := range words {
if blocked[word] {
continue
}
counts[word]++
if counts[word] > best {
answer, best = word, counts[word]
}
}
return answer
}
Python•most-common-word/solution.py
import re
from collections import Counter
class Solution:
def mostCommonWord(self, paragraph: str, banned: list[str]) -> str:
blocked = set(banned)
counts = Counter(word for word in re.findall(rclass="syntax-string">"[a-z]+", paragraph.lower()) if word not in blocked)
return counts.most_common(class="syntax-number">1)[class="syntax-number">0][class="syntax-number">0]
TypeScript•most-common-word/solution.ts
function mostCommonWord(paragraph: string, banned: string[]): string {
const blocked = new Set(banned.map((word) => word.toLowerCase()));
const counts = new Map<string, number>();
let answer = class="syntax-string">"";
let best = class="syntax-number">0;
for (const word of paragraph.toLowerCase().match(/[a-z]+/g) ?? []) { if (blocked.has(word)) continue; const count = (counts.get(word) ?? class="syntax-number">0) + class="syntax-number">1; counts.set(word, count); if (count > best) { best = count; answer = word; } }
return answer;
}