Reverse String Iteratively
Problem
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
1
2
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Example 2
1
2
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
My Answer
- 2개의 index 포인터를 이용해서 스왑한다.
l_idx가r_idx보다 작을때만 순회한다. 만약l_idx가r_idx와 같거나 커지는 경우는 더이상 스왑할 것이 없다는 의미.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public void reverseString(char[] s) {
int l_idx = 0;
int r_idx = s.length - 1;
while( l_idx < r_idx ) {
char src = s[l_idx];
char dst = s[r_idx];
s[l_idx++] = dst;
s[r_idx--] = src;
}
}
}