06 右旋转字符

20 阅读1分钟

题目

image.png

思路1

暴力法:定义一个辅助数组,将后两个和前n-2个先后存进辅助数组中,即可达到该结果,就是时空复杂度较大,此处不再写代码。

思路2

运用合理的逆置,即可。核心代码是两个数互换。 空间复杂度为O(1)。

#include<stdio.h>
#include<string.h>
char *Reverse(char *s,int l,int r){
	char t;
	while(l<r){
		t=s[l];
		s[l]=s[r];
		s[r]=t;
		l++;
		r--;
	}
}
int main(){
	char s1[100];
	int k=2;
	gets(s1);
	int len=strlen(s1);
	Reverse(s1,0,len-1);
	Reverse(s1,0,k-1);
	Reverse(s1,k,len-1);
	puts(s1);
	return 0;
}