一尘不染

如何测试一个字符串是否是另一个字符串的子序列?[重复]

algorithm

如何测试一个字符串是否是另一个字符串的子序列?

这比作为子字符串要弱。例如,’iran’不是’ireland’的子字符串,而是子序列IRelANd。区别在于子序列不必是连续的。

更多示例:

  • “印度尼西亚”包含“印度”。 INDonesIA
  • “罗马尼亚”包含“阿曼”。 rOMANia
  • “ malawi”包含“ mali”。 MALawI

动机:我的朋友喜欢文字游戏。昨天我们打了“国家内部的国家”。我很好奇我们是否错过了对。

编辑:如果您不熟悉子序列的数学定义

子序列是一个序列,可以通过删除某些元素而不改变其余元素的顺序来从另一个序列派生


阅读 258

收藏
2020-07-28

共1个答案

一尘不染

我做了

def is_subsequence(x, y):
    """Test whether x is a subsequence of y"""
    x = list(x)
    for letter in y:
        if x and x[0] == letter:
            x.pop(0)

    return not x
2020-07-28