概述
给出一个输入字符串。其目的是根据频率对字符串进行排序。我们必须根据字符频率的递减顺序进行排序。让我们通过一个例子来了解它
例子1
Input: "bcabcb"
Output: "bbbcca"
例二
Input: "mniff"
Output: "ffmni"
程序
下面是同样的程序
package main
import (
"fmt"
"sort"
)
func frequencySort(s string) string {
stringMap := make(map[byte]int)
lenS := len(s)
for i := 0; i < lenS; i++ {
stringMap[s[i]]++
}
itemArray := make([]item, 0)
for key, value := range stringMap {
i := item{
char: key,
frequency: value,
}
itemArray = append(itemArray, i)
}
sort.Slice(itemArray, func(i, j int) bool {
return itemArray[i].frequency > itemArray[j].frequency
})
output := ""
for i := 0; i < len(itemArray); i++ {
for j := 0; j < itemArray[i].frequency; j++ {
output = output + string(itemArray[i].char)
}
}
return output
}
type item struct {
char byte
frequency int
}
func main() {
output := frequencySort("bcabcb")
fmt.Println(output)
output = frequencySort("mniff")
fmt.Println(output)
}
输出:
bbbcca
ffmni