优衣库网站建设seo研究中心qq群
目录
题目要求
代码思路
代码实现
题目要求
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串
例如
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;
}
代码验证:
两字符串相同时:
两字符串不同时: