手摇算法(也叫三次反转算法)
看题:将字符串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