[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.