leetcode1002-查找共用字符

题目描述

  • 给定字符串数组 words,找出所有的共用字符(包括重复字符)
  • 任意顺序返回

示例

输入:words = ["bella","label","roller"]
输出:["e","l","l"]

输入:words = ["cool","lock","cook"]
输出:["c","o"]

题解

  • 虽然是简单题,但是是简单题里需要绕一下的
  • 思路
    1. 数据范围只有 100,暴力模拟也能过
    2. 用一个数组当字母的哈希表;遍历字符串,维护字符频率的最小值;根据词频生成答案
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
}
posted @ 2025-08-20 23:19  余越  阅读(9)  评论(0)    收藏  举报