JOI2008予選 問題2@Scheme

今日はここまで。文字列処理むずい。

(define (count-substring str sub)
  (define (count-substring-sub2 strl subl count)
    (if (null? subl)
      (+ count 1)
      (if (null? strl)
        count
        (if (char=? (car strl) (car subl))
          (count-substring-sub2 (cdr strl) (cdr subl) count)
          count))))
  (define (count-substring-sub strl subl count)
    (if (null? strl)
      count
      (count-substring-sub (cdr strl) subl (count-substring-sub2 strl subl count))))
  (count-substring-sub (string->list str) (string->list sub) 0))

(let ((input-string (symbol->string (read))))
  (print (count-substring input-string "JOI"))
  (print (count-substring input-string "IOI")))