Post

[Programmers] #181905 - 문자열 뒤집기 [Java][C++][Python]

문자열에서 인덱스 s부터 e까지 구간만 뒤집은 결과를 반환하는 워밍업 문제.

[Programmers] #181905 - 문자열 뒤집기 [Java][C++][Python]

문제 링크


1. 아이디어

문자열을 인덱스 기준 [0, s), [s, e], (e, 끝) 세 구간으로 나누고, 가운데 구간만 뒤집어 세 조각을 다시 이어 붙인다.


2. 복잡도

접근시간공간
풀이$O(N)$$O(N)$

($N$ = my_string의 길이. 뒤집은 결과 문자열을 새로 만드는 데 $O(N)$ 공간이 든다)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
class Solution {
    public String solution(String my_string, int s, int e) {
        return my_string.substring(0, s) +
                new StringBuilder(my_string.substring(s, e + 1)).reverse() +
                my_string.substring(e + 1);
    }
}
1
2
3
4
5
6
7
#include <bits/stdc++.h>
using namespace std;

string solution(string my_string, int s, int e) {
    reverse(my_string.begin() + s, my_string.begin() + e + 1);
    return my_string;
}

C++ 문자열은 가변이라, 값으로 받은 my_string[s, e] 구간을 reverse로 제자리에서 뒤집은 뒤 그대로 반환했다.

1
2
def solution(my_string, s, e):
    return my_string[:s] + my_string[s : e + 1][::-1] + my_string[e + 1 :]

This post is licensed under CC BY 4.0 by the author.