我试图在HackerRank中解决这个Question。
#t=int(input().strip())
t=1
for i in range(0,t):
#u=input()
#pw=str(input()).split(' ')
#s=input().strip()
u=6
pw=['because', 'can','do', 'must', 'we', 'what']
s="wedowhatwemustbecausewecan"
pw_in_s=[]
for p in pw:
if p in s:
pw_in_s.append(p)
print(pw_in_s)
start=0
length=1
res=""
while start+length<=len(s):
tmp=s[start:start+length]
print (tmp)
if tmp in pw_in_s:
res+=" "+tmp
start=length
length=1
else:
length=length+1
print(res)
解决问题的代码并不完整。但是我中途停留了。
问题
即使列表pw_in_s
包含项'do'
,if tmp in pw_in_s
tmp
时'do'
也无法满足length
。此程序也会进入无限循环,因为count()
值不会增加。
问题出在哪里?
答案 0 :(得分:2)
即使列表pw_in_s包含项目'do',if tmp in 当tmp为'do'时,pw_in_s不满意。
我无法重现这个问题。
该程序也处于无限循环中。
这发生在if tmp in pw_in_s:
的代码路径中,它不一定在每次迭代的终止条件上取得进展。设置start=length
和length=1
并不会让start+length
大于len(s)
。
要进行调试,请将print (tmp)
更改为print(start, length, len(s), tmp, pw_in_s, (tmp in pw_in_s))
。