2017-12-05 4 views
-2

Ich frage mich nur, wie ich überprüfen kann, wie viele Zeichen zwei Zeichenfolge gemeinsam haben. Zum Beispiel wenn ich "Auto" und "Autos" habe, sollte das Ergebnis 3 sein.Python vergleichen zwei Saiten und überprüfen, wie viele Zeichen sie gemeinsam haben

Jemand ein Hinweis?

Beifall und Dank im Voraus

Max

+0

wie in beliebiger Reihenfolge oder an bestimmten Stellen, zB Auto, rac = 3? Was ist mit Wiederholungen? – lPlant

+0

Wissen Sie, wie man [in Python über eine Zeichenkette iteriert] (https://stackoverflow.com/questions/43605490/python-iterate-over-string)? Das lässt dich Charakter für Buchstabe gehen. –

+0

Iterieren Sie die erste Zeichenfolge, fügen Sie 1 hinzu, wenn Sie das aktuelle Zeichen in der zweiten Zeichenfolge finden. Ergebnis zurückgeben? – IMCoins

Antwort

2

Hier ist eine Lösung mit Counter. Wir machen ein für jedes der Wörter, dann finden Sie den Schnittpunkt dieser Counter s. Das selbst ein Counter ist, und wir können nur die Werte summieren die Anzahl der gemeinsam genutzten Zeichen finden

from collections import Counter 

def shared_chars(s1, s2): 
    return sum((Counter(s1) & Counter(s2)).values()) 

print(shared_chars('car', 'carts')) 

druckt

3 

Bei Counter, Kreuzung ist das Minimum von entsprechenden zählt.

>>> Counter('abbb') & Counter('bcc') 
Counter({'b': 1}) 
2

Da Sie keinen Code nicht schreiben, ich will es auch nicht. Aber im Grunde dieses:

-convert Strings zur Liste

-use Sets Briefe zu erhalten, die sie gemeinsam

-get Länge Ihres Sets

größte Gefahr hier wäre, wenn man will haben zählen zu wiederholen Buchstaben

1

So etwas

count = 0 

for letter in set(string1): 
    count += string2.count(letter) 

print(count) 
Verwandte Themen