思路:
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];
}
}
}