写一个函数,判断一个字符串是否是另外一个字符串旋转之后的字符串
//例如 s1=AABCD和s2=BBDAA 返回真 或1
// s1=abcd和s2=ABCD 返回假 或0
用开辟两倍空间 通过拷贝 链接 查找方法实现
malloc 开辟空间
strcpy 字符串拷贝
strcat 字符串链接
strstr 字符串查找
#include
#include
#include
bool IsRotate(char*str, char*sub)
{assert(*str != NULL);assert(*sun != NULL);if (strlen(str) != strlen(sub)) //判断字符串长度是否相等 如果不相等直接返回假return false;char*tmp = (char*)malloc(sizeof(char)*strlen(str) * 2 + 1);// 开辟一个两个str长度的空间 +1为了给\0做准备strcpy(tmp, str); //将str里的字符串拷贝到tmp中strcat(tmp, str); // 再将str里的字符串链接到tmp中 得 HelloBityHelloBitychar*res=strstr(tmp, sub);// 通过查找 BityHellofree( tmp );return (res != NULL); // 找了了不为空则就是真 找不到返回空 就为假}
int main()
{char*str = "HelloBity";char*sub = "Bityhello";bool flag=IsRotate(str, sub);if (flag)printf("True");elseprintf("False");return 0;
}