标签:
/* 不用临时变量交换a[begin]和a[end]两内存单元的内容 */void stringReverse(char a[], int begin, int end){ for(; begin < end; begin++, end--){ a[begin] ^= a[end]; a[end] ^= a[begin]; a[begin] ^= a[end]; }}void loopRightShift(char a[], int n, int k){ k %= n; stringReverse(a, 0, n-k-1); /* 先对a[0...n-k-1]这(n-k)个字符逆序 */ stringReverse(a, n-k, n-1); /* 再对a[n-k...n-1]这k个字符逆序 */ stringReverse(a, 0, n-1); /* 最后对整个字符串逆序 */}
数组循环位移K位
原文地址:http://www.cnblogs.com/bendantuohai/p/4627500.html