zoukankan      html  css  js  c++  java
  • (字符串 数组 递归 双指针) leetcode 344. Reverse String

    Write a function that reverses a string. The input string is given as an array of characters char[].

    Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

    You may assume all the characters consist of printable ascii characters.

    Example 1:

    Input: ["h","e","l","l","o"]
    Output: ["o","l","l","e","h"]
    

    Example 2:

    Input: ["H","a","n","n","a","h"]
    Output: ["h","a","n","n","a","H"]

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    1)
    这个是水题,不过我打算用递归来解决它
    C++代码:
    class Solution {
    public:
        void reverseString(vector<char>& s) {
            helper(s,0,s.size()-1);
        }
        void helper(vector<char>& s,int start,int end){
            if(start >= end){
                return;
            }
            char tmp = s[start];
            s[start] = s[end];
            s[end] = tmp;
            helper(s,start+1,end-1);  //是两端往中心靠的递归
        }
    };

     2)

    这个可以用双指针。

    C++代码:

    class Solution {
    public:
        void reverseString(vector<char>& s) {
            int i = 0,j = s.size() - 1;
            while(i < j){
                swap(s[i],s[j]);
                i++;
                j--;
            }
        }
    };
    
    
  • 相关阅读:
    畅通工程续
    find the safest road
    Window Pains
    什么是DO / DTO / BO / VO /AO ?
    编程四大件
    1.Redis简介和安装
    0.Redis课程大纲
    8.docker容器虚拟化与传统虚拟机比较
    7.docker私有仓库
    6.Docker服务编排
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10738685.html
Copyright © 2011-2022 走看看