题目描述
- 字符串的左旋问题包含两点:
- 1.左旋字符串。
- 2.判断字符串是否是另一个字符串左旋得到的。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void LeftRotateOne(char str[], int size)
{
char tmp;
int i;
if (str == NULL)
{
return;
}
if (size == 1)
{
return;
}
tmp = str[0];
for (i = 1; i < size; i++)
{
str[i - 1] = str[i];
}
str[size - 1] = tmp;
}
void LeftRotateN(char str[], int size, int n)
{
if (str == NULL)
{
return;
}
for (int i = 0; i < n % size; i++)
{
LeftRotateOne(str, size);
}
}
int LeftRotateCmp(char str1[], char str2[])
{
int len1 = (int)strlen(str1);
int len2 = (int)strlen(str2);
if (len1 != len2)
{
return 0;
}
for (int i = 0; i < len1; i++)
{
if (strcmp(str1, str2) == 0)
{
return 1;
}
LeftRotateOne(str1, len1);
}
return 0;
}
int main()
{
char str[] = "abcd";
char str1[] = "dabc";
LeftRotateOne(str, (int)strlen(str));
printf("%s\n", str);
LeftRotateN(str, (int)strlen(str), 3);
printf("%s\n", str);
int a = LeftRotateCmp(str, str1);
printf("%d\n",a);
system("pause");
return 0;
}
调试结果