给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
![]()
func frequencySort(s string) string {
m := make(map[string]int)
for i:= 0; i< len(s);i++{
_,ok := m[string(s[i])]
if ok != true{
m[string(s[i])] = strings.Count(s,string(s[i]))
}
}
n := map[int][]string{}
var a []int
for k, v := range m {
n[v] = append(n[v], k)
}
for k := range n {
a = append(a, k)
}
sort.Sort(sort.Reverse(sort.IntSlice(a)))
res := ""
for _, k := range a {
for _, s := range n[k] {
res+=strings.Repeat(s,k)
}
}
return res
}
解题思路:map按值排序
函数:sort.Sort(sort.Reverse(Sort.IntSlice(a)))
strings.Repeat(string, int)