이 문제는 배열 내부에서 문자열을 뒤집는 문제이다.
이는 정말 간단하게 투포인터로 풀어낼 수 있다. 한 포인터는 0부터 오른쪽으로, 다른 포인터는 끝 위치에서부터 왼쪽으로 이동해가며, 두 포인터가 각각 가리키는 위치의 원소들을 swap해주면 되는 문제이다.
이를 코드로 옮기면 다음과 같다.
class Solution {
public void reverseString(char[] s) {
int i = 0, j = s.length - 1;
while (i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
}
}
이를 재귀함수로 구현하면 다음과 같다.
class Solution {
public void reverseString(char[] s) {
reverseString(s, 0, s.length - 1);
}
public void reverseString(char[] s, int i, int j) {
if (i >= j)
return;
char temp = s[i];
s[i] = s[j];
s[j] = temp;
reverseString(s, i + 1, j - 1);
}
}