【LeetCode】(簡單)344. 反轉字符串

思路:

1. 最偷懶的應該是把字符數組從後向前打印一遍,但是實質上並沒有更改數組內容,不推薦;

2. 和交換兩個元素一樣,把數組從中間分開,兩兩交換;而交換的方法就有兩種種,異或、開闢新空間。

3. i ^= j; j ^= i; i ^= j; 這樣就交換了i和j的值; 可以這麼理解,i和j異或後,得到了一箇中間的鑰匙,i和這個鑰匙異或就得到了j,反之,j和這個鑰匙異或就得到了i;

開闢新空間就是創建一個char c來存儲i ,然後交換i和j;

4. 當然異或是較快的,而且在限制不能開闢新元素的情況下是可以使用的;

代碼:

import java.util.*;

class Solution {
    public void reverseString(char[] s) {
        for(int i=0 ; i<s.length/2 ; i++){
            int j = s.length-1-i;
            s[i] ^= s[j];
            s[j] ^= s[i];
            s[i] ^= s[j];
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章