【问题标题】:Finding a subsequence of one string in another string在另一个字符串中查找一个字符串的子序列
【发布时间】:2020-03-14 00:58:26
【问题描述】:

在另一个字符串中查找一个字符串(“hello”)的子序列

def isSubSequence(string1, string2, m, n): 
    if m == 0:    return True
    if n == 0:    return False


 if string1[m-1] == string2[n-1]: 
    return isSubSequence(string1, string2, m-1, n-1) 

 return isSubSequence(string1, string2, m, n-1) 

string1 = "hello"
string2 = input()
m = len(string1) 
n = len(string2) 
if isSubSequence(string1, string2, m, n): 
    print ("YES")
else: 
    print ("NO")

答案: 好的,我已经完成了这段代码,我得到了答案。所以我想和你们分享正确而简单的答案:)

【问题讨论】:

  • 你试过什么?显示您的代码。 StackOverflow 不是我们为您做作业的地方;大多数情况下,这是我们帮助您的代码的地方。
  • 完成。写我的代码。
  • 您能否更具体地说明问题所在?它怎么不起作用?有没有调试过?

标签: python string find subsequence


【解决方案1】:
import re
print(["Yes","No"][bool(re.match(".*?h.*?e.*?l.*?l.*?0",my_string))])

我猜是你可以解决这个问题的一种方法......

虽然执行以下操作可能要快得多

def findIt(s,target):
  s = list(target)
  for c in s:
    if c == s[0]:
      s.pop(0)
      if not s:
        print("Yes")
        return True
  print("No")

findIt(s,"hello")

【讨论】:

  • 嗯,这 500 个字符串需要我的电脑 75 秒:''.join(c*100 for c in 'hello')
  • 我添加了问号以使匹配“非贪婪”可能会改善它
  • 不,现在相同的字符串需要 533 秒。顺便说一句,我刚刚注意到您有 两个 错误,它们在某种程度上相互抵消(大概这就是您没有注意到它们的原因)。 0 代替 o 和 Yes 和 No 的切换。
猜你喜欢
  • 2022-06-17
  • 2021-09-26
  • 2012-11-23
  • 2022-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
相关资源
最近更新 更多