思路:
示例:char a[] = {nihao},若k为12,size为5.
1.若k比数组的size大很多,则求模,得到适当大小的k值。k=k%size=2;
2.将【0,size-k)区间的值反转。{hinao}
3.将【size-k,size)区间的值反转。{hinoa}
4.将【0,size)区间的值反转。{aonih}
参考代码如下:
void Reverse(char a[],int l,int r) { if(a==NULL) return; while (l<r) swap(a[l++],a[r--]); } void RightShift(char a[],int k,int size) { if (a!=NULL) { if(k>size) k %= size; Reverse(a,0,size-k-1); Reverse(a,size-k,size-1); Reverse(a,0,size-1); } }