C++基础(③反转字符串(字符串 + 双指针))
题目描述:编写一个函数,将输入的字符串反转过来(要求原地修改字符串,不使用额外空间)。
示例:输入 s = ["h","e","l","l","o"] → 输出 ["o","l","l","e","h"]。
思路提示:
用两个指针分别指向字符串的开头(left=0)和结尾(right = s.size()-1),交换两个指针指向的字符,然后 left++、right--,直到 left >= right。
注意:C++ 中字符串是可变的,直接通过下标修改即可。
代码
#include <iostream>
#include <vector>using namespace std;// 原地反转字符串
void reverseString(vector<char>& s) {int left = 0;int right = static_cast<int>(s.size()) - 1;while (left < right) {swap(s[left], s[right]);++left;--right;}
}// 测试
int main() {vector<char> s = {'h', 'e', 'l', 'l', 'o'};reverseString(s);for (char c : s) cout << c << ' ';return 0;
}
swap 帮你交换,static_cast 安全转型,vector 是动态数组,&
避免拷贝,范围 for 让遍历写法极简。