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 让遍历写法极简。
更多推荐

所有评论(0)