題目描述:編寫一個函數,將輸入的字符串反轉過來(要求原地修改字符串,不使用額外空間)。
示例:輸入 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 讓遍歷寫法極簡。