先看看原題:編寫乙個函式,其作用是將輸入的字串反轉過來。
示例 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...