题目内容:
写一个函数,判断一个字符串是否为另外一个字符旋转后的字符串。
例如:给定S1=AABCD和S2=BCDAA,返回1
给定S1=abcd和S2=ACBD,返回0;
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
#include <stdio.h>
#include <Windows.h>
#include <assert.h>
//1、实现任意次数的左旋
//2、逐次进行左旋,然后不断进行比较。
void LeftRotate(char *str, int len, int num)
{
while(num){
assert(str);
assert(len > 0);//校验
assert(num >= 0);
char temp = str[0];
i:max:len - 2;
int i = 0;
for (; i < len - 1; i++)
{
str[i] = str[i + 1];
}
str[i] = temp;
num--;
}
}
int main()
{
char str1[] = "1234abcd";
char str2[] = "abcd1234";
int len = strlen(str1);
int num = 3;
printf("before:%s\n", str1);
int i = 0;
for (; i < len; i++)
{
if (strcmp(str1, str2) == 0)
{
printf("yes\n");
break;
}
LeftRotate(str1,len,1);
}
if (i == len)
{
printf("no!\n");
}
printf("after:%s\n", str1);
system("pause");
return 0;
}
加油吧 阿超没有蛀牙!