袋鼠词是指一个单词中携带另一个单词但没有移调任何字母。例如,勇气包含cog,cur,core等但不运行,gen,gone.Given 2 string im试图检查第一个字符串袋鼠是第二个词。
这是我的代码
let size = CGSize(width: 30.0, height: 30.0)
let aspectScaledToFitImage = image.af_imageAspectScaled(toFit: size)
但是我无法获得所需的输出。例如对于s1 = chariot和s2 = rat我的代码显示为true而答案是假的。有人可以解释我犯了什么错误吗?
答案 0 :(得分:1)
除了你的问题之外,还有很多你可以做的事情,所以我会对其中的一些进行评论。
但是,您的主要问题是,您要在所有字符上循环i
,j
和k
,而不是将i < j < k
限制为import sys
s1=input().rstrip()
s1l=[]
for i in s1:
s1l.append(i)
s2=input().rstrip()
s2l=[];sol=[]
for i in s2:
s2l.append(i)
总是如此。
import sys
s1=input().rstrip()
s2=input().rstrip()
s1l=[c for c in s1]
s2l=[c for c in s2]
sol=[]
这段代码可以更清晰地写成:
s2l
这更像是Pythonic和干净。但是,你从不使用import sys
s1=input().rstrip()
s2=input().rstrip()
s1l=[c for c in s1]
sol=[]
,为什么要这样做呢?
s1l
更好。但是你实际上可以索引到一个字符串而不将其放入列表中。你从未使用过s1
,除了你可以用import sys
s1=input().rstrip()
s2=input().rstrip()
sol=[]
ls=len(s1)
for i in range(ls):
for j in range(ls):
for k in range(ls):
sol.append((s1[i]+s1[j]+s1[k]))
做的长度。
ls=len(s1)
for i in range(ls-2):
for j in range(i+1, ls-1):
for k in range(j+1, ls):
sol.append((s1[i]+s1[j]+s1[k]))
这是您的主要问题所在。我会先按照您的方式修复它:
sol
但是,如果你已经知道它有一个袋鼠字,为什么还要继续建立一个可能的解决方案列表(ls=len(s1)
for i in range(ls-2):
for j in range(i+1, ls-1):
for k in range(j+1, ls):
sol.append((s1[i]+s1[j]+s1[k]))
for i in sol:
if i==s2:
print('s1 is a kangaroo word of s2')
sys.exit()
print('s1 is Not a kangaroo word of s2')
)?这是一个更好的解决方案。而不是:
ls=len(s1)
for i in range(ls-2):
for j in range(i+1, ls-1):
for k in range(j+1, ls):
word = s1[i]+s1[j]+s1[k]
if word == s2:
print('s1 is a kangaroo word of s2')
sys.exit()
print('s1 is Not a kangaroo word of s2')
这样做:
content
但是...... 这个解决方案只能找到长度为3的子词,而且还很麻烦。为了找到所有长度的子词,你必须要小心一点......