leetcode 1002. 查找共用字符

2023.9.6

leetcode 1002. 查找共用字符_第1张图片        个人感觉这题难度不止简单,考察到的东西还是挺多的。 首先理解题意,可以将题意转化为:求字符串数组中 各字符串共同出现的字符的最小值。  分为三步做:

  1. 构造一个哈希表hash,初始化第一个字符串的字母出现频率。
  2. 再构造一个哈希表other_hash,用来依次统计后面的字符串中每个字符出现的频率,每个字符串统计完之后和上一个哈希表对比,取频率小的那个值。
  3. 遍历第一个hash表将频率大于0的字符放入ans中。

        代码如下:

class Solution {
public:
    vector commonChars(vector& words) {
        //本题可以简化为求数组中各字符串共同出现的字符的最小值
        vector ans;
        int hash[26] = {0};
        //初始化第一个字符串的字母出现频率
        for(int i=0; i

        ps:有几个点注意下:

  • memset函数: void *memset(void *str, int c, size_t n)  ,用于复制字符 到参数 str 所指向的字符串的前 n 个字符,最后一个参数是这n个字符占的内存大小。 本题用于将other_hash表重新初始化为全0值。
  • string s(1 , 'a'+i): 在结尾遍历hash函数的时候,需要将数字转化为对应的字母,如:0对应a,1对应b。 这里string的用法为:第一个参数代表要创建一个包含一个字符的字符串,第二个参数代表这个字符的值由整数i加上字符 'a' 的ASCII码值决定。

你可能感兴趣的:(leetcode专栏,leetcode,算法,职场和发展)