题目描述:编写一个函数,将输入的字符串反转过来(要求原地修改字符串,不使用额外空间)。
示例:输入 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 让遍历写法极简。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐