★判断一个字符串是否为另外一个字符串旋转之后的字符串。

例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA     AABCD右旋一个字符得到DAABC                  

AABCD左旋两个字符得到BCDAA     AABCD右旋两个字符得到CDAAB                 

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include<stdlib.h>
int spin(char *p, char *q)
{
assert(p != NULL && q != NULL);   //断言传入的指针为不为空,用以抛出异常
strncat(p, p, strlen(p));     //strncat函数用以连接两个字符串,若用strcat则可能会发生越界,数组长度不够容纳越界处后续的字符,strlen用以求出字符串的长度
if (strstr(p, q) == NULL)      //strstr用以在原字符串中查找目标字符串,注意参数的位置顺序
{
return 0;
}
else
{
return 1;
}
}
int main()
{
char p[20] = "AABCD";          //原字符串
char *q = "BCDAA";             //目标字符串char r[20] = "abcd";          //原字符串char *s = "ACBD";            //目标字符串printf("字符串:%s\t%s\n",p,q);
int ret = spin(p, q);
printf("BACK_VALUE=%d\n",ret);    //输出返回值
printf("字符串:%s\t%s\n",r,s);
int rew = spin(r, s);
printf("BACK_VALUE=%d\n",rew);    //输出返回值
system("pause");
return 0;
}

wKiom1Y4ZDyiOMO4AACimEipvu8382.jpg