力扣-1002题 查找常用字符(C++)- 哈希+字符转字符串规整

题目链接:https://leetcode-cn.com/problems/find-common-characters/
题目如下:
在这里插入图片描述
思路:(把数组当作哈希表使用
统计出搜索字符串里26个字符的出现的频率,然后取每个字符频率最小值,最后转成输出格式就可以了。

class Solution {
public:
    vector<string> commonChars(vector<string>& words) {
        vector<string> result;

        int minfreq[26]={0};
        bool flag=true;//判断是否是读取第一个字符串,如果是,直接保存到minfreq

        for(auto& word:words){  //取出每个string
            int freq[26]={0};

            for(char ch:word)   //对每个string中的字符count
                freq[ch-'a']++;
            
            if(flag==true){
                for(int i=0;i<26;i++)
                    minfreq[i]=freq[i];
                flag=false;
            }
            else{
                for(int i=0;i<26;i++)
                if(minfreq[i]>freq[i]) minfreq[i]=freq[i];
            }
            
        }

        for(int i=0;i<26;i++){
            for(int j=0;j<minfreq[i];j++){
                char ch='a'+i;
                string str="";//空字符串
                str.append(1,ch);//1表示向末尾添加字符的数量是1,即向末尾添加一个ch字符
                result.push_back(str);
            }
            
        }

        return result;
    }
};

字符转字符串规整:(记住一种即可)

1、

char ch='x';
string str="";//空字符串
str.append(1,ch);//1表示向末尾添加字符的数量是1,即向末尾添加一个ch字符
cout<<str<<endl;

2、

string s(1, 'a'); // char -> string
cout << s << endl;

3、

char ch = 'X';
string s ;
char s1[2] = {ch, 0};//定义一个字符数组,即传统的字符串,使其值为单个字符加上字符串结束符\0。
s = s1;//将字符赋值给string对象。
cout << s << endl;

4、

char ch = 'X';
string s="a" ;//初始化一个单元。这里的"a"只是要分配一个有效的空间,具体值并不重要。"b", "C", " "均是同样的效果。
s[0] = ch;//将需要的字符替换进string对象。
cout << s << endl;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值