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

1 Answer

0 votes
package main

import (
    "fmt"
)

func findSecondMostFrequentChar(str string) rune {
    // Step 1: Count the frequency of each character
    frequency := make(map[rune]int)
    for _, char := range str {
        frequency[char]++
    }

    // Step 2: Find the most frequent and second most frequent characters
    var maxFreq, secondMaxFreq int
    var maxChar, secondMaxChar rune
    
    for char, freq := range frequency {
        if freq > maxFreq {
            secondMaxFreq = maxFreq
            secondMaxChar = maxChar
            maxFreq = freq
            maxChar = char
        } else if freq > secondMaxFreq && freq != maxFreq {
            secondMaxFreq = freq
            secondMaxChar = char
        }
    }

    return secondMaxChar
}

func main() {
    str := "bbaddddccce";
    
    secondMostFrequentChar := findSecondMostFrequentChar(str)
    
    fmt.Printf("The second most frequent character is: %c\n", secondMostFrequentChar)
}



/*
run:

The second most frequent character is: c

*/

 



answered Nov 29, 2024 by avibootz
...