Post

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

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

문제 링크


1. 아이디어

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


2. 복잡도

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

($N$ = my_string의 길이. C++는 인자를 제자리에서 뒤집어 반환해 공간 $O(1)$)


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;
}

std::string은 가변이라, 값으로 받은 my_string의 $[s, e]$ 구간을 std::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.