一、双指针
class Solution {
public void reverseString(char[] s) {
int n = s.length;
for (int left = 0, right = n - 1; left < right; ++left, --right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
}
}
二、异或交换
public void reverseString(char[] s) {
int n = s.length;
for (int i = 0; i < n / 2; ++i) {
int j = n - 1 - i;
s[i] ^= s[j];
s[j] ^= s[i];
s[i] ^= s[j];
}
}
本文介绍了两种反转字符数组的方法。第一种是经典的双指针技术,通过从两端同时向中间移动并交换元素实现翻转。第二种方法是利用异或操作,巧妙地在不额外使用临时变量的情况下达到交换的目的。这两种方法都具有较高的效率,适用于字符串或数组的反转操作。
118

被折叠的 条评论
为什么被折叠?



