344. Reverse String - Easy
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); } }