aboutsummaryrefslogtreecommitdiff
path: root/racket/leetcode/lc-1221-split-a-string-balanced.rkt
blob: 4c757700232cc791325f2bb5b010f3f8d6655516 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#lang racket
(require rackunit)

(define/contract (balanced-string-split s)
  (-> string? exact-integer?)
  (for/fold ([acc 0]
             [count 0]
             #:result count)
            ([c (string->list s)])
    (let* ([increment (case c
                        [(#\R) 1]
                        [(#\L) -1])]
           [new-acc (+ increment acc)]
           [new-count (case new-acc
                        [(0) (add1 count)]
                        [else count])])
      (values new-acc new-count))))

(check-eq? (balanced-string-split "RLRRLLRLRL") 4)