2022.8.2今天你刷题了吗?
题目:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
分析:
给定一个char的vector数组,不能生成新的空间内存,把原字符串逆转。
思路:最简单的思路:一个reverse!!!当然了,这样子就没意义了。因此我们的思路是:
利用两个指针,一个从左开始,一个从右开始,并且利用一个temp当中间变量。对两个值进行交换,直到左>=右为止。
解析:
1.双指针
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0;
int right = s.size() - 1;
char temp;
while (left < right)
{
temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
}
};
2.reverse
class Solution {
public:
void reverseString(vector<char>& s) {
reverse(s.begin(),s.end());
}
};