leetcode twopointers 344 revese string

THE

問題

ここに画像の説明を挿入

成し遂げる

アイデア

この質問では、左右の反転の概念を見て、二分法と左右のダブルポインタが必要です。ソートの問題ではないので、左右のダブルポインタを考慮してください。基本的な左右のポインタテンプレートを適用するだけです。

  • 左右を定義する
  • 真ん中になる
    • 左> =半ば
    • スワップ;
  • 戻る

まとめと考察

  1. 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;
   }
};

おすすめ

転載: blog.csdn.net/liupeng19970119/article/details/114012226