字符串移位(C语言实现,面试题目)

题目:编写程序,在原字符串中把字符串尾部的m个字符移动到字符串的头部,要求:长度为n的字符串操作时间复杂度为O(n),空间复杂度为O(1)。 例如,原字符串为”Ilovebaofeng”,m=7,输出结果为:”baofengIlove”。

思路:借鉴了July的旋转字符串的思路。分别将字符串的两部分逆序,然后再对整个字符串逆序。

#include
#include
#include

void RotateString(char *str, int from, int to);
void ShiftSubString(char* str, int m, int n);

int main()
{
	int k,len;
	char str[1000];
	printf("input a string:\n");
	scanf_s("%s", str,1000);
	len = strlen(str);
	printf("input k:\n");
	scanf_s("%d", &k);
	ShiftSubString(str, k, len);
	puts(str);
	system("pause");
	return 0;
}

void RotateString(char *str,int from, int to)
{
	char temp;
	while (from
时间复杂度O(n),空间复杂度O(1)。

你可能感兴趣的:(C/C++)