【问题标题】:Check if a string is a ordered sublist of a list检查字符串是否是列表的有序子列表
【发布时间】:2021-02-15 12:55:44
【问题描述】:

假设我有一个具有以下模式的列表:

lst=['A','B','C','D']

我有以下三个字符串

str1='BCD'
str2='ABD'
str3='CD'

如您所见,str1str3 都是 lst 模式的有序子字符串,而 str2 不是。我需要找到一种方法来检查这是否属实。

这可以吗?应该是 ['ABCD'] 而不是 ['A','B','C','D'] 这样才能正常工作吗?

【问题讨论】:

  • 如何呈现列表或字符串并不那么重要,因为您可以轻松地来回转换。我可能会在我的第一次尝试中使用回溯,但你应该编写代码,然后用一个失败的测试用例来呈现它。现在你只有一个“写我的代码”的帖子。 minimal reproducible example

标签: python python-3.x list boolean


【解决方案1】:

您可以简单地将列表加入到字符串中

lstAsString = ''.join(lst)

然后使用in 运算符检查字符串是否是其中的一部分

if str2 in lstAsString:
   print("This is an ordered substring")

【讨论】:

  • 为了完整性:这是基于您的示例。我会将它们中的每一个都算作“有序子字符串”,因为字母ABD 按顺序是ABCD 的一部分,只是其中有一个洞。如果您要对“有序子字符串”进行这种解释,则可能要进行元素比较(遍历 haystack 直到找到 needle 中的第一个字母,然后查找下一个字母直到找到完整的 needle 或haystack 已经完全遍历)
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2017-04-27
  • 2018-11-09
相关资源
最近更新 更多