题目链接: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;