【讨论】关于反转字符串的算法,该如何解决
【讨论】关于反转字符串的算法把一个字符串中的字符从头到尾反转过来,如12345反转成54321,常规的算法是
【讨论】关于反转字符串的算法
把一个字符串中的字符从头到尾反转过来,如"12345"反转成"54321",常规的算法是从头开始依次与尾部字符交换,直到达到中点的字符为止,如下所示:
char *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,只用一个就够。减少了四个字节。不知道算不算更高效。嘿,,,
另据说,异或运算,就可对换两个变量。又可减少一个字节。
[解决办法]对于char *这是理论上最快的算法。