抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。


思路

  • 临时变量
  • 位运算,异或

学习点

代码

位运算:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
void reverseString(vector<char>& s) {
int str_len = s.size();
char tmp;
for (int i = 0; i < str_len / 2; i++)
{
s[i] ^= s[str_len - 1 - i];
s[str_len - 1 - i] ^= s[i];
s[i] ^= s[str_len - 1 -i];
}
}
};

临时变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
void reverseString(vector<char>& s) {
int str_len = s.size();
char tmp;
for (int i = 0; i < str_len / 2; i++)
{
tmp = s[i];
s[i] = s[str_len - 1 -i];
s[str_len - 1 -i] = tmp;
}
}
};