django-模板層
阿新 • • 發佈:2020-11-30
前幾天有點發力過猛,這兩天稍微有點厭學,學不太進去的時候,找了道力扣上面簡單的題做了一下。
題目如下:
編寫一個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 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"]
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/reverse-string
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
我的思路也比較簡單樸素,一個字串反轉後頭就變成了尾,第二個元素就變成了倒數第二個元素,如果長度為奇數,那麼中間元素將不變,所以用了一手雙指標,一左一右兩兩交換,迴圈的結束條件就是左指標大於等於右指標。
交換元素的時候一時興起寫了個異或交換,要轉資料型別,應該對效能不大好吧,不是很清楚。為了減少效能消耗,如果兩元素相同就不做交換,多加了一次判斷。
public void reverseString(char[] s) {for (int i = 0, j = s.length - 1; i < j; i++, j--) { if (s[i] != s[j]) { s[i] = (char) ((byte)s[i] ^ (byte) s[j]); s[j] = (char) ((byte)s[i] ^ (byte) s[j]); s[i] = (char) ((byte)s[i] ^ (byte) s[j]); } } }