Как я могу написать метод, который принимает строку ввода и печатает первый наиболее повторяющийся символ в этой строке - PullRequest
0 голосов
/ 29 ноября 2018

Я пытался создать функцию, которая могла бы перебирать любую строку и возвращать наиболее распространенный символ в этой строке.Мой прогресс показан ниже.Я пытался вставить массив символов в словарь, где я мог бы затем распечатать словарь, содержащий все символы и их количество.Для людей, которые думают, что не было приложено никаких усилий, я просто пропустил весь код, который я попробовал и закомментировал.Не видел никакого смысла в этом, поэтому были включены только предметы первой необходимости.

let str = "sunday, monday, happy days"

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете легко перебирать своих персонажей и увеличивать их количество в своем словаре:

Swift 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

0 голосов
/ 29 ноября 2018
let str = "sunday, monday, happy days"

let dict = str.reduce(into: [:]) { counts, word in counts[word, default: 0] += 1 }

print(dict)
...