{
for(int i =0; j< strlen(s)-1; i {
char c=s[i];
s[i]=s[j];
s[j]=c;
}
}
此函數原出自kernighan和ritchie合作的經典作品tcpl第二版
評注:此算法無論是從時間複雜度,還是從使用最小空間方面,都應該是最優了。
時間上隻用了周遊字元串長度一半的時間,空間上隻是建立字元串長度
一半的空間。當然我們還可以從空間上進一步減少使用。
void reverse(char s[])
char c;
c=s[i];
我們從外部聲明c,這樣在整個字元串反轉過程中我們就隻使用了一個變量。空間使用
更小了!但是我們必須要考慮的一個問題是,當我們傳遞的字元串隻用一個字元的時候,
上面的算法,不如第一個算法效率高,因為上面的這個函數,多建立了一個沒有使用的
char對象,并且c++語言推薦:"盡可能推遲對變量聲明"。是以真正我還是同意用《tcpl》
上的那種方法,在使用出定義char c=s[i]的形式!
以上讨論我們基于編譯器不作任何優化的條件下進行.