2017-01-24 6 views
0

辞書のキーとその値が共通の文字を共有しているかどうかを確認しようとしています。キーと値の両方が文字列であり、.charactersメソッドを使用して文字列の文字にアクセスできることはわかっていますが、文字列内の文字のいずれかが他の文字と一致するかどうかを確認する方法がわかりませんその他。例えば文字列内の文字が辞書内で一致するかどうかを調べる

、私のように、ペットの辞書を持っていた場合:「猫」と「犬」は何の文字が一致していないので、trueを返しますが、「ネズミ」と「蛇」を比較すると、falseを返します比較

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

彼らは "a"を共有していたからです。

私はまだコーディングが新しく、まだ学習していない非常にシンプルなものかもしれません。

答えて

0

charactersSetを作成し、このセットのintersectionを他の文字で見つけて共通の文字を取得します。交差点が空の場合、共通の文字はなく、その逆もあります。ここで

は、それがどのように見えるかです:

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)) 
} 

プリント:

右のトラックに私を得るように見えた

+0

偽ラットヘビ真

猫犬。しかし、大文字と小文字の区別がないのはどうですか?だから、もし私が["ヤギ": "ブタ"]を持っていれば、彼らは大文字と小文字を区別することができます。私は、現在のソリューションは、大文字と小文字が区別されるため、間違っていると思われます。 – tjcarney89

+0

@ tjcarney89比較する前に文字列を小文字にする – Alexander

関連する問題