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"]

M1: iterative

把string转成array,two pointer交换对称位置的字符,最后返回c转换成的新字符串new String(c)

time: O(n), space: O(n)

class Solution {
    public String reverseString(String s) {
        char[] c = s.toCharArray();
        int i = 0, j = s.length() - 1;
        while(i < j) {
            char tmp = c[i];
            c[i] = c[j];
            c[j] = tmp;
            i++;
            j--;
        }
        return new String(c);
    }
}

M2: recursive

time: O(n), space: O(logn)

class Solution {
    public void reverseString(char[] s) {
        reverse(s, 0, s.length - 1);
    }
    
    private void reverse(char[] s, int i, int j) {
        if(i >= j) {
            return;
        }
        char tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
        
        reverse(s, i + 1, j - 1);
    }
}
原文地址:https://www.cnblogs.com/fatttcat/p/10123569.html