November 18, 2018
https://leetcode-cn.com/problems/sort-characters-by-frequency/
使用语言:Golang
import (
"strings"
)
func frequencySort(s string) string {
charMap := make(map[rune]int)
arr := make([]string, len(s))
for _,c := range s {
charMap[c]++
}
for k,v := range charMap {
arr[v - 1] += strings.Repeat(string(k), v)
}
r := ""
for _,c := range arr {
r = c + r
}
return r
}
声明一个 map 结构
map[KeyType]ValueType
KeyType 可以是任意可比较的类型,ValueType 则支持全部类型
那么哪些是可比较类型,哪些不是呢? 可比较类型:boolean, numeric, string, pointer, channel, interface, structs, array 不可比较类型:slices, maps, functions (他们无法用 == 判定相等)
map 是指针类型。
未经初始化的 map 结构值为 nil,在直接对其进行写入时会 panic,所以一定要进行初始化:
m := make(map[string]int) // 初始化 map 数据结构,并返回其指针
当你用 map 访问一个不存在的 key 时,go 会自动返回对应类型的零值,比如
i := m["hello"]
i 的值为 0,因为对应到 m 的声明上,map[string]int ,返回的应该是个 int 类型,而 int 类型的零值是 0
如何查看 map 中有多少 key?
len(m)
如何在 map 中删除一个 key?
delete(m, key)
map 不是并发安全的,在并发场景下使用 map 一定要记得加锁
map 不保证遍历时的顺序
痕迹
没有过去,就没法认定现在的自己