如何检查字符串是否是方案中另一个字符串的子序列

问题描述 投票:0回答:1

我正在尝试创建一个递归函数,它接受一个字符串string-1并检查另一个字符串string-2是否是一个子序列。我得到了一些基本工作但无法使整个程序工作。

我尝试做的是实施“会员?”功能。我想要它做的是检查字符串2中的每个元素是否是字符串1的一部分,但是,检查它们的字符是否有序。

例如,给定字符串:hello,如果另一个字符串是:hel,ell,ello,hello或hlo,则该函数将生成true。如果另一个字符串是:ehl,oll或helllo,该函数将产生false。

(define (possible-subset? word subset-word)
  (cond [(> (length (string->list subset-word)) (length (string->list word)) ) false]
        [(equal? (string->list word) (string->list subset-word)) true]))

上面提供的代码会处理明确的赠品,告诉您这个单词是否是一个子集。

任何帮助将不胜感激。谢谢。

recursion substring scheme racket
1个回答
1
投票

以你好和hlo为例。

  1. 两个字符串是否以相同的字符开头,如果它们从两个字符串中删除它。

随着那个你好和hlo减少到ello和lo

  1. 如果字符串不以与查询字符串相同的字符开头,则在字符串中向前跳转,直到字符串的第一个字符与查询的第一个字符相同

随着ello和lo减少到llo和lo然后规则1再次适用导致lo和o,其中规则2将其减少到o和o,规则1减少到两个空字符串

  1. 如果查询为空,则结果为匹配。如果字符串为空但查询不是,则结果不匹配。

根据规则3,结果是匹配。

© www.soinside.com 2019 - 2024. All rights reserved.