【发布时间】:2019-11-01 15:47:07
【问题描述】:
这是我要解决的问题
写一个函数
(last-substring-len s n)。它消耗一个 Str 和一个 Nat,并返回 s 的子字符串 按字母顺序排在最后的长度 n。
记得考虑你的函数是否需要它的任何东西 论据!
例如:
(last-substring-len "foobar" 4) => "ooba" (last-substring-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso"
实际上我几乎解决了我的问题,但我希望能够更改我的代码,以便函数 get-maximium 的 if 语句替换为 cond 语句。
这是我的原始代码:
(define (substrings-w-len s n)
(cond
[(> n (string-length s)) '()]
[ else (cons (substring s 0 n)
(substrings-w-len (substring s 1 (string-length s)) n))]))
(define (get-maximium string-list)
(if(null? string-list) '()
(if(= 1( length string-list)) string-list
(if (equal? #true (string>=? (first string-list) (first (rest string-list))))
(get-maximium (cons (first string-list) (rest (rest string-list))))
(get-maximium (rest string-list))))))
(define (last-substring-w-len s n)
( get-maximium (substrings-w-len s n)))
(check-expect (last-substring-w-len "foobar" 4) "ooba")
这会产生(list "ooba"),而它应该只产生“ooba”,所以我需要将列表转换为我应该能够自己解决的字符串,但如果有人能帮助我解决这个问题,我将不胜感激。
现在的主要问题是我想用条件语句替换 get-maximum 中的 if 语句
这是我更改 get-maximium 函数以尝试用 cond 语句替换 if 函数,但它还不起作用。
(define (get-maximium string-list)
(cond
[(null? string-list) '()]
[(= 1( length string-list)) string-list]
[ else (equal? #true (string>=? (first string-list) (first (rest string list))))
(get-maximium (cons (first string-list) (rest (rest string-list))))
(get-maximium (rest string-list))]))
【问题讨论】:
标签: string list substring racket