aboutsummaryrefslogtreecommitdiff
path: root/racket/leetcode/lc-819-most-common-word.rkt
blob: 68a89c34a3bc4d6b2a2b997938f3018ba7645249 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#lang racket
(define/contract (most-common-word paragraph banned)
  (-> string? (listof string?) string?)
  (define word-count-hash (make-hash))
  (define banned-word-hash
    (apply hash (flatten (map (λ (w) (cons w 'banned)) banned))))
  (define word-list
    ((compose string-split string-downcase)
     (string-replace paragraph #px"[^A-Za-z[:space:]]" " ")))
  (for/list ([word (in-list word-list)])
    (cond [(hash-has-key? banned-word-hash word) void]
          [else (hash-update! word-count-hash word add1 0)]))
  (car (argmax cdr (hash->list word-count-hash))))