Leetcode Java Reverse String II
업데이트:
문제
코드
class Solution {
public String reverseStr(String s, int k) {
char[] array = s.toCharArray();
int length = array.length;
int i = 0;
while (i < length) {
int j = Math.min(i + k - 1, length - 1);
this.swap(array, i, j);
i += 2 * k;
}
return new String(array);
}
private void swap(char[] array, int left, int right) {
while (left < right) {
char temp = array[left];
array[left++] = array[right];
array[right--] = temp;
}
}
}
결과
설명
-
s의 매 처음부터 k번째 값과 매 2k번쨰 위치에서 k개의 문자들을 역순으로 반전시켜준다.
- 문제 풀이에 필요한 변수를 정의한다.
- array는 s를 문자 배열로 변환하여 저장한 배열이다.
- length는 array의 길이를 저장한 변수이다.
- i는 위치를 저장할 변수이다.
- i가 length 미만까지 아래를 수행한다.
- j에 $i + k - 1$ 혹은 문자의 길이를 벗어날 경우에 마지막 값인 $length - 1$ 중 작은 값을 넣어준다.
- array의 i번째 문자부터 j번째 문자까지 순서를 역순으로 반전시킨다.
- i에 다음 위치인 $2 \times k$의 위치로 이동시켜준다.
- 반복이 완료되면 array를 문자열로 변환하여 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기