; first non-repeating character
(define (first-non-rep-char str)
(let ((freq (make-vector 256 0)))
(do ((j 0 (+ j 1))) ((= j (string-length str)))
(let* ((c (string-ref str j)) (i (char->integer c)))
(vector-set! freq i (+ (vector-ref freq i) 1))))
(let loop ((j 0))
(let* ((c (string-ref str j)) (i (char->integer c)))
(cond ((= j (string-length str)) #f)
((= (vector-ref freq i) 1) c)
(else (loop (+ j 1))))))))
(display (first-non-rep-char "aabcbcdeef"))