判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回

        判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=AC

        判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0

方法一:

算法思想:一个字符串左旋,无非还是这个字符串本身(长度未改变),并且字符本身未改变只是顺序改变;申请一个原来字符串数组空间的2倍加1(算上\0),如果另一个比

较对象如果是这个字符串的子串(其中用到strstr函数),说明 二者互为左旋字符串(前提是长度必须相等)

#include 
#include 
#include 
int find_substring(char *msg, char *substring)
{int len=strlen(msg);char *tmp=(char*)malloc(2*len+1);  //申请2倍数组空间if(len==strlen(substring))  //保证要比较的两个字符串长度相同{strcpy(tmp, msg);  //原来的字符串拷贝到新空间里strcat(tmp,msg);  //字符串的拼接,实现复制if(strstr(tmp, substring)!=NULL){return 1;}}free(tmp);  //释放申请的新空间return 0;
}
int main()
{char arr1[]="abc123";char arr2[]="abc123";printf("%d\n",find_substring(arr1, arr2));return 0;
}
方法二:

算法思想:从字符串2的第一个字符开始扫描,在字符串1中寻找和它一样的字符,一旦找到将这个数组元素置‘\0’,扫描完毕之后,在字符串1中寻找非‘\0’的字符,如果找不

到说明二者互为左旋字符串,否则肯定不是(由于字符串左旋之后字符串中的字符是不变的)

#include 
int main()
{int i=0,j=0;char arr1[]="abyde";char arr2[]="cdeab";int len1=strlen(arr1);int len2=strlen(arr2);for(i=0;i