#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int is_left_move(char* s1, char* s2)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
if (len1 != len2)
{
return 0;
}
strncat(s1, s2, 6);//strcat(s1,s2)中s1!=s2才可使用 把s2追加到s1上的库函数 需使用#define _CRT_SECURE_NO_WARNINGS 1
char* ret = strstr(s1, s2);//匹配成功则返回在str1中第一次找到str2跟匹配子串的首地址,失败则返回NULL
if (ret != NULL)
return 1;
else
return 0;
}
int main()
{
char arr1[] = "abcdef";
char arr2[] = "abefab";
int ret = is_left_move(arr1,arr2);
if (ret == 1)
printf("yes\n");
else
printf("no\n");
return 0;
}
//暴力解法
#include<stdio.h>
#include<string.h>
void left_move(char* arr, int k)
{
int len = strlen(arr);
reverse(arr, arr + k - 1);
reverse(arr + k , arr + len - 1);
reverse(arr, arr + len - 1);
}
void reverse(char*left,char *right)
{
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int is_left_move(char* s1, char* s2)
{
int len = strlen(s1);
int i = 0;
for (i = 0; i < len; i++)//因为左旋可能会有len种情况
{
left_move(s1, 1);
int ret = strcmp(s1, s2);
if (ret = 1)
return 1;
}
return 0;
}
int main()
{
char arr1[] = "abcdef";
/*left_move(arr, 1);
printf("%s", arr);*/
char arr2[] = "cdefab";
int ret = is_left_move(arr1,arr2);
if (ret == 1)
printf("yes\n");
else
printf("no\n");
return 0;
}