这个问题要求我完成一个较小的函数,它会消耗一个字符串并生成一个字符串。消耗的字符串仅包含数字字符,我们将其称为数字(1-9,0)。生成的字符串将由一个长度为1(单个数字)的字符串组成,该字符串通过重复删除字符串中的第一个或最后一个数字而获得,具体取决于哪个值更大。
例如,
(smaller "5284")
=> (smaller "284")
=> (smaller "28")
=> (smaller "2")
=> "2"
如果有平局(在第一位和最后一位之间),请删除最后一位。
例如,
(smaller "131")
=> (smaller "13")
=> (smaller "1")
=> "1"
那么我该如何为这个问题编写Scheme代码呢? 非常感谢!
答案 0 :(得分:1)
这样的事情怎么样?
(define smaller
(lambda (str)
(cond
[(= 1 (string-length str)) str]
[(> (string-ref str 0) (string-ref str (- (string-length str) 1))) (smaller (substring str 0 (- (string-length str) 1)))]
[else (smaller (substring str 1))])))