题目:
https://leetcode-cn.com/problems/reverse-string/
题解:
双指针法。一个指针指向数组开始,一个指针指向数组结尾,每次交换两个指针位置的字符,然后移动指针,时间复杂度:O(n)。
public void reverseString(char[] s) {
int left = 0, right = s.length - 1;
char temp;
while (left < right) {
temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
}
这里交换两个字符的操作也可以使用位运算实现,代码更简洁,更高级:
public void reverseString(char[] s) {
int left = 0, right = s.length - 1;
while (left < right) {
s[left] ^= s[right];
s[right] ^= s[left];
s[left] ^= s[right];
left++;
right--;
}
}