爱玩科技网
您的当前位置:首页如何快速的判断两个string中是否含有相同的字符

如何快速的判断两个string中是否含有相同的字符

来源:爱玩科技网

可以用两个for循环,时间复杂度O(n²),太慢。

借助逻辑运算,用二进制表示两个字符串是否含有某个字符,然后进行并操作:

做法1:只能判断含有的字符是否相同,不能判断出现次数相同。

string s1, s2;
vector<int> mask(2);
for(char c: s1)
mask[0] |= 1<< c-'a';

for(char c: s2)
mask[1] |= 1 << c-'a';

return mask[0] & mask[1];


做法2:能判断每个字符出现的次数都要确保一样:

vector<int> count(26,0);
for(int i=0; i<s1;size(); i++)
{
count[s1[i]-'a']++;
count[s2[i]-'a']--;
}

for(int i=0; i<26; i++)
if(count[i]!=0)
return false;

return true;


因篇幅问题不能全部显示,请点此查看更多更全内容