★判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定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; }
本文出自 “温暖的微笑” 博客,请务必保留此出处http://10738469.blog.51cto.com/10728469/1709162
原文地址:http://10738469.blog.51cto.com/10728469/1709162