如何分解列表中的字符串



我将确定字符串供应列表中是否有任何字符串比供应的字符串长。我试着用刺痛的长度来计算绳子的长度,但没有用。我知道因为洛斯不是一根绳子,但我如何才能把洛斯变成一根绳子;一串或者我不需要使用字符串长度。我看了一下文件。有一个列表字符串函数,但列表只包含字符。

(define LOS-0 '())
(define LOS-1 (cons "POG" LOS-0))
(define LOS-2 (cons "WooooW" LOS-1))
(define LOS-3 (cons "Yee" LOS-2))
(define (any-longer? los)
(cond
[(empty? los) '()]
[(cons? los)
(if
(< (string-length (first los) (string-length (rest los))))
#true
#false)]))

或者只是递归:

(define (any-longer? s los)
(cond ((empty? los) #false)
((< (string-length s) (string-length (car los))) #true)
(else (any-longer? s (cdr los)))))

您需要查看字符串列表中是否有任何元素比给定字符串长。Racket函数memf是一种简单的方法,它与比较字符串长度的函数相结合。它返回其汽车满足谓词函数的列表尾部,如果没有满足谓词函数,则返回#f

例如,

(define (any-longer? los str)
(if (memf (lambda (s) (> (string-length s) (string-length str))) los)
#t
#f))

为了获得额外积分:将其重写为只调用(string-length str)一次,并编写自己版本的memf。(如果这是家庭作业,后者可能是强制性的)

您想知道字符串列表中任何元素的长度是否比您拥有的字符串的长度长。

计算字符串列表中的任何元素是否比字符串的长度长:

  1. 计算字符串的长度,称之为l。现在我们需要计算字符串列表中是否有任何元素比l:长

    1. 列表是空的吗?如果它是,那么它的任何元素都不长于l
    2. 列表的第一个元素不是字符串吗?如果它不是字符串,这就是一个错误。这是一个可选步骤,但任何有能力的程序都会包括它
    3. 所以第一个元素是一个字符串:第一个元素的长度是否大于l?如果是,那么这个元素比字符串长,我们就完成了
    4. 否则,计算字符串列表中rest的任何元素是否长于l。你现在知道怎么做了

最新更新