位移运算

解题思路
奇怪的判定。
把
b
b
b 的后置
0
0
0 清空,若
b
b
b 是
a
a
a 的子串,那么就可以通过位移达到。
code
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
cin>>n;
while(n--)
{
int a,b,flg=0;
scanf("%d%d",&a,&b);
if(!b)
{
printf("Yes\n");
continue;
}
while(!(b&1)&&b) b>>=1;
while(a>=b)
{
int t=a^b;
if(((a&b)==b)&&((t&-t)>b||!t))
{
flg=1;
break;
}
a>>=1;
}
printf("%s\n",(flg?"Yes":"No"));
}
}
这篇博客探讨了一个利用位移运算判断字符串子串存在的算法。内容涉及将字符串末尾的连续0清除,然后通过位移和异或操作来检查一个字符串是否为另一个字符串的子串。代码实现中包含了关键的逻辑判断,例如检查位移后的异或结果是否满足条件。
522

被折叠的 条评论
为什么被折叠?



