aboutsummaryrefslogtreecommitdiff
path: root/racket/leetcode/lc-500-keyboard-row.rkt
blob: 5f13143c121b3b84cf3b4a3fb5f22e966641e163 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#lang racket

(define keyboard-rows (list "qwertyuiop" 
                            "asdfghjkl" 
                            "zxcvbnm"))

(define keyboard-row-sets
  (for/list ([row keyboard-rows])
    (list->set (map string (string->list row)))))

(define/contract (find-words words)
  (-> (listof string?) (listof string?))
  (define word-checks
    (for/list ([w words])
      (define word-set
        (list->set (map string (string->list (string-downcase w)))))
      (if (for/or ([row keyboard-row-sets])
            (subset? word-set row))
          w
          '())))
  (filter-not empty? word-checks))

(find-words '("Hello" "Alaska" "Dad" "Peace"))