反轉字串

2022-07-02 15:42:12 字數 820 閱讀 1401

前幾天有點發力過猛,這兩天稍微有點厭學,學不太進去的時候,找了道力扣上面簡單的題做了一下。

題目如下:

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。

不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。

你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。

示例 1:

輸入:["h","e","l","l","o"]

輸出:["o","l","l","e","h"]

示例 2:

輸入:["h","a","n","n","a","h"]

輸出:["h","a","n","n","a","h"]

我的思路也比較簡單樸素,乙個字串反轉後頭就變成了尾,第二個元素就變成了倒數第二個元素,如果長度為奇數,那麼中間元素將不變,所以用了一手雙指標,一左一右兩兩交換,迴圈的結束條件就是左指標大於等於右指標。

交換元素的時候一時興起寫了個異或交換,要轉資料型別,應該對效能不大好吧,不是很清楚。為了減少效能消耗,如果兩元素相同就不做交換,多加了一次判斷。

public

void reversestring(char

s) }

}

字串反轉

據說一道微軟的面試題,要求考慮時間和空間的優化,下面給出幾種通常字串反轉的方法 1 直接陣列操作 char strreverse char str return str 這種做法原來的str沒有儲存,原來的str也改變了 2 指標操作 char strreverse char str return ...

字串反轉

include include include 方法一 將第乙個字元和最後乙個互換,第二個和倒數第二個互換,如此依次迴圈下去 char strrev1 const char str return tmp free tmp 方法二 不額外申請一片儲存字串的記憶體空間,通過中間變數來改變傳遞進來的字串裡...

字串反轉

解法一 第一次看到這題目,想到最簡單 最直覺的解法就是 遍歷字串,將第乙個字元和最後乙個交換,第二個和倒數第二個交換,依次迴圈,即可,於是有了第乙個解法 const char str return tmp 這裡是通過陣列的下標方式訪問字串的字元,實際上用指標直接操作即可。解法二正是基於此,實現 為 ...