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