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

技术要点:双指针。

总结:对于这种反转类的题目,尤其是以中间元素为座标轴的反转,用双指针进行解决是目前比较常见的一种解决方案。当两个指针相遇时,循环结束。注意,本题目不需要新创建一个数组或向量来存储,只需要在需要在原来的数组上操作即可。

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