aboutsummaryrefslogtreecommitdiff
path: root/racket/leetcode/lc-125-valid-palindrome.rkt
blob: ed91d0841fb6062b6cc0d10fa93f41b8ffe6b6b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
#lang racket

(define/contract (is-palindrome s)
  (-> string? boolean?)
  (define clean-string
    (string-downcase (string-replace s #rx"[^A-Za-z0-9]" "")))
  (string-prefix? (apply string-append (map string (reverse (string->list clean-string))))
                  (substring clean-string
                             0
                             (ceiling (/ (string-length clean-string) 2)))))

(is-palindrome "A man, a plan, a canal: Panama")