编程之美3.1字符串移位包含问题

来源:互联网 发布:杭州初级程序员薪资 编辑:程序博客网 时间:2024/05/22 06:29
假设字符串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;}