How to find the second most frequent character in a string with Swift

1 Answer

0 votes
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'

*/

 



answered Nov 29, 2024 by avibootz
...