假设字符串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;
}