实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
#include <stdio.h>
#include <stdlib.h>
void TurnLeft(char* arr, int n)
{
int len = 0;
int tmp = 0;
while (arr[len] != '\0')
{
++len;
}
while (n > 0)
{
tmp = arr[0];
for (int i = 0; i < len - 1; ++i)
{
arr[i] = arr[i + 1];
}
arr[len - 1] = tmp;
--n;
}
}
int main()
{
char arr[] = "ABCDEFG";
TurnLeft(arr,3);
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i)
{
printf("%c ",arr[i]);
}
system("pause");
return 0;
}
判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Turn(char* arr1, char* arr2)
{
int len1 = 0;
int len2 = 0;
int tmp = 0;
while (arr1[len1] != '\0')
{
++len1;
}
while (arr2[len2] != '\0')
{
++len2;
}
if (len1 != len2)
{
return 0;
}
for(int i = 0; i < len1; ++i)
{
tmp = arr1[0];
for (int j = 0; j < len1 - 1; ++j)
{
arr1[j] = arr1[j + 1];
}
arr1[len1 - 1] = tmp;
if (strcmp(arr1, arr2) == 0)
{
return 1;
}
}
return 0;
}
int main()
{
char arr1[] = "ABCDEFG";
char arr2[] = "CDEFGAB";
printf("%d\n", Turn(arr1, arr2));
system("pause");
return 0;
}