假设字符串s1=AABCD,s2=CDAA,判断s2是否可以通过S1的循环移位得到字符串包含。
如 s1移两位: 1.ABCDA->2.BCDAA 则此时包含了 S2="CDAA"
#include <iostream>
#include <string>
using namespace std;
void func1(){//循环移动,每次判断是否符合要求
char src[]="AABCD";
char des[]="CDAA";
int lens = strlen(src);
for(int i=0;i<lens;i++){
char temp = src[0];
for(int j=0;j<lens-1;j++){
src[j]=src[j+1];
}
src[lens-1]=temp;
if(strstr(src,des)){
cout<<"yes"<<endl;
return;
}
}
cout<<"no"<<endl;
}
void func2(){//将原始字符串复制一份,接在后面,然后strstr查看。
char src[]="AABCD";
char des[]="CDAA";
int lens = strlen(src);
//char* p = new char[2*lens+1];
char *p = (char *)malloc(sizeof(char)*(2*lens+1));
strcpy(p,src);
strcat(p,src);
if(strstr(p,des)){
cout<<"yes"<<endl;
}else{
cout<<"no"<<endl;
}
}
int main(){
func1();
return 0;
}
字符串循环移位判断
本文介绍了一种通过字符串循环移位来判断一个字符串是否能通过循环移位包含另一个字符串的方法。提供了两种实现方式:一种是直接进行循环移位并逐次比较;另一种是将源字符串复制一份并连接起来,再使用strstr函数检查子串是否存在。
2529

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



