2017-01-24 5 views
0

Ich versuche zu sehen, ob ein Schlüssel und sein Wert in einem Wörterbuch alle gemeinsamen Buchstaben teilen. Sowohl die Schlüssel als auch die Werte sind Zeichenfolgen, und ich weiß, dass ich mit der .characters-Methode auf die Zeichen in den Zeichenfolgen zugreifen kann, aber ich bin nicht sicher, wie überprüft werden kann, ob eines der Zeichen in einem übereinstimmt andere.Überprüfen, ob Zeichen in Strings innerhalb eines Wörterbuchs übereinstimmen

Zum Beispiel, wenn ich ein Wörterbuch von Haustieren wie gehabt:

var pets = ["cat" : "dog", "rat" : "snake"] 

„cat“ und „Hund“ zurückkehren würde Vergleich wahr, weil keine Buchstaben entsprechen, sondern „Ratte“ und „Schlange“ würde return false Vergleich weil sie ein "a" teilten.

Ich bin ziemlich neu im Codieren, also könnte es etwas sehr einfaches sein, das ich noch nicht gelernt habe.

Antwort

0

Ich würde eine Set der characters erstellen, und dann die gemeinsamen Buchstaben durch die Suche nach intersection dieses Satzes mit den anderen Worten 'Zeichen. Wenn die Kreuzung leer ist, dann gibt es keine gemeinsamen Buchstaben und umgekehrt.

Hier ist, wie das aussehen würde:

extension String { 
    func hasLettersInCommon(with other: String) -> Bool { 
     let selfLetters = Set(self.characters) 
     let otherLetters = other.characters 
     let commonLetters = selfLetters.intersection(otherLetters) 
     return !commonLetters.isEmpty 
    } 
} 

var pets = ["cat" : "dog", "rat" : "snake"] 

for (key, value) in pets { 
    print(key, value, key.hasLettersInCommon(with: value)) 
} 

druckt:

Ratte Schlange wahr

Katze Hund falsch

+0

Das schien mir auf dem richtigen Weg zu bekommen. Aber was ist mit der Groß-/Kleinschreibung? Wenn ich also ["Ziege": "Schwein"] hätte, würde ich immer noch wissen wollen, dass sie einen Brief teilen, obwohl der Großbuchstabe in Groß- und Kleinbuchstaben in dem anderen steht. Ich glaube, die aktuelle Lösung würde das falsch finden, weil es die Groß-/Kleinschreibung betrifft, oder? – tjcarney89

+0

@ tjcarney89 Zeichne die Strings vor dem Vergleich ab – Alexander

Verwandte Themen