LeetCode 344 反轉字符串

題目描述:

編寫一個函數,其作用是將輸入的字符串反轉過來。

示例 1:

輸入: "hello"
輸出: "olleh"

示例 2:

輸入: "A man, a plan, a canal: Panama"
輸出: "amanaP :lanac a ,nalp a ,nam A"

相關話題:雙指針;字符串。

相似題目:345 反轉字符串中的元音字母;541 反轉字符串II

解題思路:

  1. 建立兩個指針,
  2. 一個從0開始,從前往後遍歷;
  3. 一個從最後一個元素開始,從後往前 遍歷;
  4. 交換兩個指針指向的元素;
  5. 當兩個指針相遇時,循環結束。
class Solution {
public:
    string reverseString(string s) {
        int i = 0, j = s.length() - 1;
    //    vector<char> cvec;
        while(i < j){
            char temp;
            temp = s[i];
            s[i] = s[j];
            s[j] = temp;
            i++;
            j--;
        }
        return s;
    }
};

技術要點:雙指針。

總結:對於這種反轉類的題目,尤其是以中間元素爲座標軸的反轉,用雙指針進行解決是目前比較常見的一種解決方案。當兩個指針相遇時,循環結束。注意,本題目不需要新創建一個數組或向量來存儲,只需要在需要在原來的數組上操作即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章