【问题标题】:Checking if Characters in Strings Match Up Within a Dictionary检查字符串中的字符是否在字典中匹配
【发布时间】:2017-01-24 22:41:10
【问题描述】:

我正在尝试查看字典中的键及其值是否共享任何常见字母。键和值都是字符串,我知道我可以使用 .characters 方法访问字符串中的字符,但我不确定如何检查一个字符中的任何字符是否与字符串中的任何其他字符匹配其他。

例如,如果我有一本宠物字典:

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

比较“cat”和“dog”会返回 true,因为没有字母匹配,但比较“rat”和“snake”会返回 false,因为它们共享一个“a”。

我对编码还很陌生,所以它可能是一些我还没有学过的非常简单的东西。

【问题讨论】:

    标签: swift string dictionary character


    【解决方案1】:

    我会创建一个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))
    }
    

    打印:

    鼠蛇真

    猫狗假

    【讨论】:

    • 这似乎让我走上了正轨。但是不区分大小写呢?因此,如果我有 ["Goat" : "Pig"],我仍然想知道它们共享一个字母,即使一个字母是大写字母,另一个字母是小写字母。我相信当前的解决方案会发现它是错误的,因为它区分大小写,对吧?
    • @tjcarney89 在比较之前将字符串小写
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多