簡體   English   中英

兩個字符串中的常用字母

[英]common letters in two strings

我一直在嘗試解決這個程序,它接受兩個字符串作為輸入並輸出常用字母數。 例如,如果輸入是“common”和“connor”,則輸出應為4(1 c,1 n和2 o)。我使用set()函數但輸出3(它將兩個o視為單個公共信件 )。 任何幫助將不勝感激。謝謝!

順便說一下這是我寫的代碼:

print("Enter number of inputs: ")
c = int(input())
store = []
for each_item in range(c):
    print("Enter First String: ")
    one = input()
    print("Enter Second String")
    two = input()
    s = len(set(one) & set(two))
    store.append(s)
for each_number in store:
    print(each_number)

使用collections.Counter

>>> from collections import Counter

>>> Counter('common')
Counter({'m': 2, 'o': 2, 'c': 1, 'n': 1})
>>> Counter('connor')
Counter({'o': 2, 'n': 2, 'c': 1, 'r': 1})

>>> common = Counter('common') & Counter('connor') # intersection
>>> common
Counter({'o': 2, 'c': 1, 'n': 1})
>>> sum(common.values())
4

你也可以做列表理解

>>> a = 'common'
>>> b = 'connor'
>>> sum([1 for l in a if l in b])
4

編輯

a,b = 'come','common'

def collision_count(a,b):
    da = {l:a.count(l) for l in a}
    db = {l:b.count(l) for l in b}
    return sum(min(v,db[k]) for k,v in da.items() if k in db.keys())

print collision_count(a,b)
3

你現在好嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM