手摇算法(也叫三次反转算法)
看题:将字符串abcdefg,变成efgabcd,要求空间复杂度O(1)。
解答:
第一步:将子串abcd反转,变成dcba。源字符串变成dcbaefg第二步:将字串efg反转,变成gfe。源字符串变成dcbagfe第三步:将整个字符串dcbagfe反转,变成efgabcd。
手摇算法常常被用来旋转字符串。同时,手摇算法也可以用来做原地归并...
分类:
编程语言 时间:
2015-07-31 10:37:41
阅读次数:
189
如何实现字符串倒置呢,直接用头尾两个指针从两边向中间扫,并且不断交换两个指针的内容,
void reverse(int a[], int n){
if(n < 2) return;
for(int i = 0; i <= n;)
swap(a[i++], a[--n]);
}
然后,如果要实现字符串反转呢,比如,有字符串abcdefg,假设要将前n个字符与剩下的字符串交换位置...
分类:
编程语言 时间:
2015-03-17 00:54:17
阅读次数:
202