题目描述
- 给定字符串数组 words,找出所有的共用字符(包括重复字符)
- 任意顺序返回
示例
输入:words = ["bella","label","roller"]
输出:["e","l","l"]
输入:words = ["cool","lock","cook"]
输出:["c","o"]
题解
- 虽然是简单题,但是是简单题里需要绕一下的
- 思路
- 数据范围只有 100,暴力模拟也能过
- 用一个数组当字母的哈希表;遍历字符串,维护字符频率的最小值;根据词频生成答案
func commonChars(words []string) []string {
minFreq := [26]int{}
for i := range minFreq { minFreq[i] = 200 }
for _, word := range words {
freq := [26]int{}
for _, w := range word { freq[w - 'a'] ++ }
for i, f := range freq[:] {
if f < minFreq[i] {
minFreq[i] = f
}
}
}
res := []string{}
for i := byte(0); i < 26; i ++ {
for j := 0; j < minFreq[i]; j ++ {
res = append(res, string('a' + i))
}
}
return res
}