题解 | #字符串字符匹配#
字符串字符匹配
https://www.nowcoder.com/practice/22fdeb9610ef426f9505e3ab60164c93
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
//判断一些数据是否都在一个集合中出现,最有效率的办法就是用哈希法。字符串均由小写字母组成,因此哈希表大小26即可。下标表示字母,值表示出现频率。用数组记录长字符串中出现字符的频率.遍历短字符串,如果对应的下标数值>0说明长字符串中出现过,否则没有出现过
bool isExist(string s1, string s2) {
int sc[26] = {0};//0--a 1--b ...
int i=0;
if (s1.size() == 0 || s2.size() == 0) {
return false;
}
for (i = 0; i < s2.size(); i++) {
sc[s2[i] - 'a']++; //比如如果s2[i]='b',那么sc[2]++;
}
for (i = 0; i < s1.size(); i++) {
if (sc[s1[i] - 'a'] == 0) {
return false;
}
}
return true;
}
int main() {
string s1, s2;
getline(cin, s1);
getline(cin, s2);
bool a=isExist(s1, s2);
cout<<boolalpha<<a<<endl;
}
查看21道真题和解析