首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

【议论】关于反转字符串的算法

2012-09-19 
【讨论】关于反转字符串的算法把一个字符串中的字符从头到尾反转过来,如12345反转成54321,常规的算法是

【讨论】关于反转字符串的算法
把一个字符串中的字符从头到尾反转过来,如"12345"反转成"54321",常规的算法是从头开始依次与尾部字符交换,直到达到中点的字符为止,如下所示:

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

char *Reverse(char *p_szBuf) {
int len = strlen(p_szBuf);
int nHalf = len / 2;

for ( int i=0, j=l……

热点排行