[LeetCode] Reverse String II

아르당·2026년 1월 27일

LeetCode

목록 보기
113/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

문자열 s와 정수 k가 주어졌을 때, 문자열의 시작 부분부터 2k개 문자마다 처음 k개 문자를 뒤집어라.

남은 문자가 k개 미만이면 모든 문자를 뒤집는다. 남은 문자가 k개 이상 2k개 미만이면 처음 k개의 문자를 뒤집고 나머지는 그대로 둔다.

Example

#1
Input: s = "abcdefg", k = 2
Output: "bacdfeg"

#2
Input: s = "abcd", k = 2
Output: "bacd"

Constraints

  • 1 <= s.length <= 10^4
  • s는 오직 영어 소문자로만 구성된다.
  • 1 <= k <= 10^4

Solved

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--;
        }
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글