THE
問題
成し遂げる
アイデア
この質問では、左右の反転の概念を見て、二分法と左右のダブルポインタが必要です。ソートの問題ではないので、左右のダブルポインタを考慮してください。基本的な左右のポインタテンプレートを適用するだけです。
- 左右を定義する
- 真ん中になる
-
- 左> =半ば
-
- スワップ;
- 戻る
まとめと考察
- mid =(0+ size())/ 2およびwhile(left <right)で解決された境界問題に注意してください。一緒に、それらは単数または偶数の長さの配列を処理できます。原理は自分で押すことで簡単に導き出すことができます。
コード
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0;
int right = s.size();
int mid = (left+right)/2;// pay attention into whether mid is correct.
while(left<right){
swap(s,left,right);
left++;
right--;
}
}
void swap(vector<char> &s,int left,int right){
char temp = '\0';
temp = s[left];
s[left] = s[right-1];
s[right-1] = temp;
}
};