方案问题较小

时间:2011-06-03 20:17:12

标签: scheme

这个问题要求我完成一个较小的函数,它会消耗一个字符串并生成一个字符串。消耗的字符串仅包含数字字符,我们将其称为数字(1-9,0)。生成的字符串将由一个长度为1(单个数字)的字符串组成,该字符串通过重复删除字符串中的第一个或最后一个数字而获得,具体取决于哪个值更大。

例如,

(smaller "5284")
=> (smaller "284")
=> (smaller "28")
=> (smaller "2")
=> "2"

如果有平局(在第一位和最后一位之间),请删除最后一位。

例如,

(smaller "131")
=> (smaller "13")
=> (smaller "1")
=> "1"

那么我该如何为这个问题编写Scheme代码呢? 非常感谢!

1 个答案:

答案 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))])))