如何快速的判断两个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;


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值