目录
题目要求
代码思路
代码实现
题目要求
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串
例如
s1 = "AABCD" ;s2 = "BCDAA" ,返回1
s1 = "AABcd" ;s2 = "BCDAA" ,返回0
代码思路
每次将 s1 左旋1个字符串,然后和 s2 判断是否相等即可
左旋实现代码:C语言 ——— 实现一个函数,使字符串左旋-CSDN博客
代码实现
#include<stdio.h>
#include<string.h>
#include<assert.h>
void Levorotation_Str(char* str)
{
size_t len = strlen(str);
char tmp = str[0];
int i = 0;
for (int i = 0; i < len - 1; i++)
{
str[i] = str[i + 1];
}
str[len - 1] = tmp;
}
int Is_Left_Move(char* str1, char* str2)
{
assert(str1 && str2);
// 判断两个字符串是否等长
if (strlen(str1) != strlen(str2))
return 0;
for (int i = 0; i < strlen(str1); i++)
{
// str1 字符串每次左旋一个字符,再判断是否等同于 str2 字符串
Levorotation_Str(str1);
if (strcmp(str1, str2) == 0)
return 1;
}
return 0;
}
int main()
{
char arr1[] = "AABCDEF";
char arr2[] = "BCDEFAA";
int ret = Is_Left_Move(arr1, arr2);
if (ret == 1)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}
代码验证:
两字符串相同时:
两字符串不同时: