计算字符串中的常见字符Python

2024-09-21 13:53:57 发布

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

此代码的输出继续为4。但是,输出应该是3。设定的交集之所以存在,是因为我相信这是通往答案的关键。答案是4而不是3的原因来自于s1中与s2匹配的2个qs和1r的数量。在

s2 = "qsrqq"
s1 = "qqtrr"
counts1=0
counts2=0
letters= set.intersection(set(s1), set(s2))
for letter1 in set(s1):
    counts1 += s2.count(letter1)
for letter2 in set(s2):
    counts2 += s1.count(letter2)


counts = min(counts1, counts2)
print (counts)

任何帮助都是非常感谢的。在


Tags: 答案代码inforcount原因关键set
3条回答

如果您想维护共同字符数的计数,应该使用collections.Counter而不是{}。在

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter(s1) & Counter(s2)  # => {'q': 2, 'r': 1}
print(sum(common_letters.values()))         # => 3

我替换了你原来的代码

for letter1 in set(s1):
    counts1 += s2.count(letter1)

收件人:

^{pr2}$

它输出,它是具有发生计数的字母:

r:1
q:3
t:0

它是正确的,字符串s2是qsrqq,您检查set(s1),它包含r和{} 计数正确。同样,如果检查第二个for循环,输出为:

q:3
r:1
s:1

因此,最小计数为4。在

#!/usr/bin/python
s2 = "qsrqq"
s1 = "qqtrr"
counts1=0
counts2=0
letters= set.intersection(set(s1), set(s2))
print ("letters: "+str(letters) + " intersection count: "+str(len(letters)))
for letter1 in set(s1):
    print ("letter1 " + str(letter1))
    counts1 += 1
for letter2 in set(s2):
    print ("letter2 " + str(letter2) )
    counts2 += 1

print ("counts1 " + str(counts1) + " counts2 " + str(counts2) )
counts = min(counts1, counts2)
print (counts)

这导致:

^{pr2}$

分析,2是正确答案(q和r是两者唯一的共同字母),3是任一组唯一值的较低数目。在

相关问题 更多 >

    热门问题