天天看點

經典算法-字元串的颠倒

{

 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]的形式!

以上讨論我們基于編譯器不作任何優化的條件下進行.

繼續閱讀