【发布时间】:2011-09-04 09:09:49
【问题描述】:
我已经尝试这个问题很长时间了,但并没有走得太远。问题是要求生成一个字符串,其中输入字符串中的所有重复字符都替换为该字符的单个实例。
例如,
(remove-repeats "aaaab") => "ab"
(remove-repeats "caaabb aa") => "cab a"
由于我正在尝试使用累积递归来做到这一点,所以到目前为止我有:
(define (remove-repeats s)
(local
[(define (remove-repeats-acc s1 removed-so-far)
(cond
[(empty? (string->list s1))""]
[else
(cond
[(equal? (first (string->list s1)) (second (string->list s1)))
(list->string (remove-repeats-acc (remove (second (string->list s1)) (string->list s1)) (add1 removed-so-far)))]
[else (list->string (remove-repeats-acc (rest (string->list s1)) removed-so-far))])]))]
(remove-repeats-acc s 0)))
但这似乎不对。请帮我修改它以使其正常工作。
谢谢!!
【问题讨论】:
-
请将您的代码放在代码块中,适当缩进,以便于阅读。
-
您可以通过在每行之前添加至少四个空格以及在适当的地方开始新行来使代码看起来更漂亮。