例如:
str1="key" chracters-['k','e','y']
str2="hey! let's place a knot"
结果:True
- [由于字符'k','e','y'
出现在 str2 字符串中。
str1="pond" characters - ['p','o','n','d']
str2="i need some sleep"
结果:True
[由于'p','o','n','d'
出现在 str2 中。]
def findStr(str1,str2):
count=0
charArr1 = list(str1.lower())
charArr2=list(str2.lower())
for i in range(len(str1)):
for j in range(len(str2)):
if charArr1[i] == charArr2[j]:
count+=1
break
if count==(len(charArr1)):
return True
str1 = input()
str2 = input()
print(findStr(str1,str2))
这个解决方案的问题是,如果我在str1中有多个相同的字符,那么它会给出错误的答案。
例如:
str1="press" str2="Please repeat!"
因此,在这种情况下它应该是false
但我的解决方案会提供true
,因为 str1 有两个"s"
和 str2 只有一个"s"
。
答案 0 :(得分:0)
这里的解决方案也适用于你的第二个条件:
str1="press"
str2="Please repeat!"
if all(i in str2 for i in str1):
if all(str1.count(i) == str2.count(i) for i in str1):
print(True)
else:
print(False)
else:
print(False)
它会o / p:False
因为s
在 str1 中是2倍,在 str2中只有1次。
编辑:
尝试将==
更改为<=
:
if all(str1.count(i) <= str2.count(i) for i in str1):
答案 1 :(得分:0)
count={}
str1="press"
str2 = "Please repeat!"
for i in str1:
if i in count:
count[i]+=1
else:
count[i]=1
for j in str2:
if j in count and count[j] !=0:
count[j]-=1
for k in count:
if count[k] != 0:
print(False)
print(True)