首页 > 解决方案 > 如何编写一个接受字符串输入并打印该字符串中第一个最重复的字符的方法

问题描述

我试图制作一个可以遍历任何字符串并返回该字符串中最常见字符的函数。我的进度如下所示。我试图将字符数组插入到字典中,然后我可以打印出包含每个字符及其计数的字典。对于那些认为没有付出任何努力的人,我只是省略了我尝试过的所有代码并注释掉了。没有看到任何用处,所以只包括必需品。

let str = "sunday, monday, happy days"

var charStr = Array(str.characters)
var charDict = Dictionary<Character,Int>()
print("This is the character string array: " , charStr)

标签: arraysswiftdictionaryswift3

解决方案


您可以轻松地遍历您的字符并增加它在字典中的出现次数:

斯威夫特 3

let str = "sunday, monday, happy days"
var charDict: [Character: Int] = [:]
for char in str.characters { 
    charDict[char] = (charDict[char] ?? 0) + 1
}
print(charDict)  //  ["d": 3, "u": 1, "a": 4, "h": 1, ",": 2, "n": 2, " ": 3, "m": 1, "o": 1, "y": 4, "s": 2, "p": 2]

您可以在字符集合上使用 max 方法来获取字典的最大值

if let mostFrequent = charDict.max(by: { $0.value < $1.value }) {
    let chars = charDict.filter { $0.value == mostFrequent.value }
                        .map { $0.key }
                        .sorted()
    print("The most frequent characters are:", chars)   // ["a", "y"]
    print("Number of occurences:", mostFrequent.value) // 4
}

最常见的字符是:a

出现次数:4


推荐阅读