以尽可能多的步骤从字符串中减去子字符串

2024-06-26 03:52:43 发布

您现在位置:Python中文网/ 问答频道 /正文

目标是找出从s中减去t的最大次数

t=ab,s=aabb。在第一步中,我们检查t是否包含在s中。这里,t包含在中间,即a(ab)b中。因此,我们将移除它,结果将是ab,并将计数值增加1。我们再次检查t是否包含在s中。现在,t等于s,即(ab)。所以,我们把它从s中去掉,然后增加计数。所以,由于t不再包含在s中,我们停止并打印计数值,在本例中为2。你知道吗

当你有s='abbaa't='abba'这样的东西时,问题就出现了。 现在不管你是从最后一步走还是乞求,都很重要,因为你会从最后一步走得更多。你知道吗

def MaxNum(s,t):
  if not t in s:
    return 0
  elif s.count(t) == 1:
    front = s.find(t)
    sfront = s[:front] + s[front + len(t):]
    return 1 + MaxNum(sfront,t)
  else:
    back = s.rfind(t)
    front = s.find(t)
    sback = s[:back] + s[back +len(t):]
    sfront = s[:front] + s[front + len(t):]
    print (sfront,sback)
    return max(1 + MaxNum(sfront,t),1 + MaxNum(sback,t))

Tags: 目标lenreturnabbackfind次数数值