문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
문자열 s와 정수 k가 주어졌을 때, 문자열의 시작 부분부터 2k개 문자마다 처음 k개 문자를 뒤집어라.
남은 문자가 k개 미만이면 모든 문자를 뒤집는다. 남은 문자가 k개 이상 2k개 미만이면 처음 k개의 문자를 뒤집고 나머지는 그대로 둔다.
#1
Input: s = "abcdefg", k = 2
Output: "bacdfeg"
#2
Input: s = "abcd", k = 2
Output: "bacd"
class Solution {
public String reverseStr(String s, int k) {
char[] str = s.toCharArray();
int n = str.length;
for(int i = 0; i <= n - 1; i += 2 * k){
if(i + k <= n - 1){
reverseStr(i, i + k - 1, str);
}else{
reverseStr(i, n - 1, str);
}
}
String ans = new String(str);
return ans;
}
public void reverseStr(int i, int j, char[] str){
while(i < j){
char temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
}