【议论】关于反转字符串的算法
【讨论】关于反转字符串的算法把一个字符串中的字符从头到尾反转过来,如12345反转成54321,常规的算法是
【讨论】关于反转字符串的算法
把一个字符串中的字符从头到尾反转过来,如"12345"反转成"54321",常规的算法是从头开始依次与尾部字符交换,直到达到中点的字符为止,如下所示:
C/C++ codechar *Reverse(char *p_szBuf) { int len = strlen(p_szBuf); int nHalf = len / 2; for ( int i=0, j=len-1; i<nHalf; i++, j-- ) { char ch = p_szBuf[i]; p_szBuf[i] = p_szBuf[j]; p_szBuf[j] = ch; } return p_szBuf;}
那么,从时间和空间两个角度考虑,有没有更高效的算法呢?
欢迎大家讨论(最好是算法本身,象ReverseString之类的现成函数就算了)
[解决办法]似乎没别的法子。
问题太简单。想玩算法,应该再复杂些。
i和j,只用一个就够。减少了四个字节。不知道算不算更高效。嘿,,,
另据说,异或运算,就可对换两个变量。又可减少一个字节。
[解决办法]