您的位置:首页 > 其它

刷题1 旋转字符串1

2018-01-23 14:16 197 查看
水博客来记录刷题

/*********************************************************
功能: 旋转字符串
描述: 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,
如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,
使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,
要求对长度为n的字符串操作的时间复杂度为 O(n),
空间复杂度为 O(1)。
**********************************************************/

#include <stdlib.h>

void ReverseString(char* s, int from, int to)
{
while (from < to)
{
char t = s[from];
s[from++] = s[to];
s[to--] = t;
}
}

void LeftRotateString(char* s, int n, int m)
{
m %= n;
ReverseString(s, 0, m - 1);
ReverseString(s, m, n - 1);
ReverseString(s, 0, n - 1);
}

int main()
{
char string[] = "hellokitty";
LeftRotateString(&string, 10, 5);
printf(string);

getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: