|
@@ -1,33 +0,0 @@
|
|
|
-#lang racket
|
|
|
-
|
|
|
-;; https://leetcode.com/problems/valid-parentheses/
|
|
|
-
|
|
|
-(define (is-left-paren c)
|
|
|
- (or (eq? c #\u28)
|
|
|
- (eq? c #\[)
|
|
|
- (eq? c #\{)))
|
|
|
-
|
|
|
-(define (right-paren c)
|
|
|
- (cond ((eq? c #\u28) #\u29)
|
|
|
- ((eq? c #\[) #\])
|
|
|
- ((eq? c #\{) #\})))
|
|
|
-
|
|
|
-(define/contract (is-valid s)
|
|
|
- (-> string? boolean?)
|
|
|
- (define (loop s stack)
|
|
|
- (if (= 0 (string-length s))
|
|
|
- (null? stack)
|
|
|
- (let ()
|
|
|
- (define c (string-ref s 0))
|
|
|
- (define remain (substring s 1))
|
|
|
- (if (is-left-paren c)
|
|
|
- (loop remain (cons c stack))
|
|
|
- (if (null? stack)
|
|
|
- #f
|
|
|
- (let ()
|
|
|
- (define stack-top (car stack))
|
|
|
- (if (eq? c (right-paren stack-top))
|
|
|
- (loop remain (cdr stack))
|
|
|
- #f)))))))
|
|
|
- (loop s '()))
|
|
|
-
|