旋转字符串之判断
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
输入:
s1 = AABCD和s2 = BCDAA,
返回:
1
输入:
s1 = abcd和s2 = ACBD
返回
0
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
法一:魔法库函数
int rotate(char* a, char* b)
{
if (strlen(a) != strlen(b))
return 0;
int len = strlen(a);
strncat(a, a, len);
char* ret = strstr(a, b);
return ret != NULL;
/*if (ret == NULL)
return 0;
else
return 1;*/
}
法二:遍历循环法
int rotate(char* a, char* b)
{
int i, j, n = strlen(a);
for (i = 0; i < n; i++)
{
char t = *a;
for (j = 0; j < n - 1; j++)
*(a + j) = *(a + j + 1);
*(a + n - 1) = t;
if (strcmp(a, b) == 0)
return 1;
}
return 0;
}
int main()
{
char a[] = "aabcd";
char b[] = "bcdaa";
int ret = rotate(a, b);
if (ret == 1)
printf("yes\n");
else
printf("no\n");
return 0;
}