演算法練習 反轉字串

2021-09-11 12:44:39 字數 559 閱讀 9617

先看看原題:編寫乙個函式,其作用是將輸入的字串反轉過來。

示例 1:

輸入: "hello"

輸出: "olleh"

示例 2:

輸入: "a man, a plan, a canal: panama"

輸出: "amanap :lanac a ,nalp a ,nam a"

反向遍歷一遍字串中的所有字元,放在乙個陣列裡面,然後再遍歷一遍陣列,取出陣列中的所有字元,拼接成字串。因為是反向遍歷將字元存放在陣列中,達到了反轉的效果。不過這種方法不太好,因為開闢了新的空間,使用了新的記憶體,空間複雜度為o(n)。後來就想,在原地反轉,那麼首字元與未字元交換,第二個字元與倒數第二個字元交換,第三個字元與倒數第三個字元交換,以此類推。如果字串的字元總數為雙數,那麼都進行了交換,如果為單數,處於中間位置的字元反轉後還是處於中間位置,所以不需要做處理。那麼這個思路就不需要開闢新的空間。

使用c++語言:

string reversestring(string s) 

return s;

}複製**

練習5 344 反轉字串

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例 1 輸入 h e l l o 輸出 o l l e...

字串反轉 演算法

xiangqi 寫道 字串比如 ad2 lsdkf,lksdjf.sdkfj 倒序排列 sdkfj lksdjf.lsdkf,ad2 每個單詞是空格分開,標點符號當作字母,不能用string的自帶的一些方法,比如indexof,trim,split等方法。大概的偽碼,字串大的話可以用 stringb...

演算法探索 反轉字串

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例 1 輸入 h e l l o 輸出 o l l e...