import Foundation
func secondMostFrequentCharacter(in str: String) -> Character? {
var frequencyDict: [Character: Int] = [:]
// Count the frequency of each character
for char in str {
frequencyDict[char, default: 0] += 1
}
// Sort characters by frequency in descending order
let sortedFrequency = frequencyDict.sorted { $0.value > $1.value }
// Check if there are at least two different frequencies
guard sortedFrequency.count > 1 else {
return nil
}
// Find the first character with a different frequency than the most frequent
for i in 1..<sortedFrequency.count {
if sortedFrequency[i].value != sortedFrequency[0].value {
return sortedFrequency[i].key
}
}
return nil
}
let s = "bbaddddccce"
if let secondMostFrequent = secondMostFrequentCharacter(in: s) {
print("The second most frequent character is '\(secondMostFrequent)'")
} else {
print("There is no second most frequent character.")
}
/*
run:
The second most frequent character is 'c'
*/