如何查找另一个字符串中是否存在字符串字符?

时间:2018-03-09 07:04:51

标签: python

例如:

str1="key" chracters-['k','e','y'] 
str2="hey! let's place a knot" 

结果:True - [由于字符'k','e','y'出现在 str2 字符串中。

例2:

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"

2 个答案:

答案 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)