我试图检查是否存在一个字符串S2的子序列,它是字符串S1。唯一需要注意的是s2的子序列,即s1不能是s2的子串。
子序列:
abac:bc是字符串的子序列
bc:bc是字符串的子字符串和子序列
示例:
s1=“devil”,s2=“devil l y”是真的,因为devil是一个子序列,使用y之前的最后一个'l'使其不是子串
s1=“魔鬼”,s2=“魔鬼”False,因为魔鬼是魔鬼的子序列,但也是魔鬼的子串

def isSubsequence(str1,str2):
    i,j = 0, 0

    while j<len(str1) and i<len(str2):
        if str1[j] == str2[i]:
            j = j+1
        i = i + 1

    return j==len(str(1))

我相信这是如何检查string1是否是string2的子序列的但是,我不知道如何添加额外的属性,即string1不是string2的子单词。
任何人都知道怎么做。

最佳答案

我们可以通过修改代码来跟踪到目前为止匹配的子序列是否会扩展到一个连续的子序列,从而得到一个更具算法性的解决方案也就是说,

def isNoncontiguousSubsequence(str1, str2):
    if len(str1) <= 1:
        return False
    j = 0
    contiguous = True
    for c in str2:
        if str1[j] == c:
            if j < len(str1) - 1:
                j += 1
            elif contiguous:
                contiguous = False
            else:
                return True
        elif j > 0:
            contiguous = False
    return False

关于string - 检查一个字符串是否是另一个字符串的子序列而不是子词的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57964631/

10-12 05:16