예를 들어 입력 값이 "hello"라면 반환 값은 "olleh" 이다.
이 문제의 해결 방안은 두개의 포인터를 이용하면 간단히 해결 가능하다.
문자열은 배열의 형태를 가지고 있고 각각은 인덱스로 접근 가능하다.
우리는 이 문자열을 뒤집어야 하므로 가장 왼쪽 문자와 가장 오른쪽 문자를 서로 바꾸고 그 다음 하나씩 가운데를 향해가며 문자를 교환하면 된다.
예를 들어 "hello" 문자열은 다음과 같이 생겼다.
문자열 | h | e | l | l | o |
인덱스 | 0 | 1 | 2 | 3 | 4 |
가장 왼쪽 인덱스, 즉 begin은 0이고, 가장 오른쪽 인덱스 end는 4이다.
이 begin과 end에 해당하는 문자를 서로 바꿔주고
다음으로 begin은 1을 증가 시키고 end는 1을 감소 시킨다.
begin이 end보다 커지거나 같아 질 때 까지 반복하게 되면 모든 문자들이 반전되게 된다.
다음은 구현된 Java 코드이다. 문자열을 char 배열로 한 이유는 String클래스의 charAt() 메소드를 이용하는 것보다 더욱 빠르기 때문이다.
class Solution {
public String reverseString(String s) {
char [] result = s.toCharArray();
int begin = 0, end = result.length - 1;
while(begin < end) {
char temp = result[begin];
result[begin] = result[end];
result[end] = temp;
begin++; end--;
}
return String.valueOf(result);
}
}