不开辟用于交换数据的临时空间,如何完成字符串的逆序

//不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)
#include "stdafx.h"
void change(char *str) {
        for(int i=0,j=strlen(str)-1; i<j; i++, j--){
                str[i] ^= str[j] ^= str[i] ^= str[j];//等价于 str[i] ^= str[j]; str[j] ^= str[i];str[i] ^= str[j];str[i] += str[j];str[j] = str[i]-str[j];str[i] = str[i]-str[j];



                                 
                 }
}
int main(int argc, char* argv[]) {
        char str[] = "abcdefg";
        printf("strSource=%s\n", str);
        change(str);
        printf("strResult=%s\n", str);
        return getchar();
}

posted on 2011-08-30 17:22  原来...  阅读(1559)  评论(0编辑  收藏  举报

导航