题解 | #字符串字符匹配#
字符串字符匹配
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; }