在使用递归的球拍中,如何返回列表中的索引,在该列表中字符串中第一次出现子字符串

时间:2019-07-03 08:47:45

标签: string recursion substring racket

我正在研究一个问题,我在其中查找字符串“ s”,然后返回存在子字符串“ pattern”的“ s”中的最小索引。我基本上是试图在特定字符串中找到子字符串的第一次出现,并以什么索引输出。关于如何解决此问题的唯一线索是,必须查看字符串中的每个字符,并从该字符开始查看是否存在子字符串“模式”,但我什至不知道如何执行此操作,除了我我完全陷入了困境。另外,如果字符串“ s”中不存在子字符串“ pattern”,则返回-1。

到目前为止,我所拥有的只是基本情况,甚至可能是不正确的。

(define (find s pattern)
  (cond
    [(null? s) -1]))

这是预期的结果

(check-expect (find "the cat is rat and is also a cat that is a cat" "cat") 4)
(check-expect (find "b b b b o t h e c b" "b") 0)
(check-expect (find "222 454 454 234 8723 737 283 454" "454") 4)
(check-expect (find "cake is deicious" "pie") -1)

如您所见,对于第一种情况,第一次出现“ cat”存在于从索引4开始的字符串“ s”中,对于第二种情况,第一次出现了“ b”存在于索引的字符串“ s”中0.对于第三种情况,字符串“ s”中首次出现的“ 454”从索引4开始。在第四种情况中,“ pie”不存在于字符串“ s”中,因此返回-1。

0 个答案:

没有答案