Skip to content

Commit 3228d99

Browse files
author
eunhwa99
committed
encode and decode strings
1 parent 6341418 commit 3228d99

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
// n: 문자열 리스트 길이, m: 각 문자열의 길이.
4+
5+
// 시간 복잡도
6+
// Encoding: O(n * m)
7+
// Decoding: O(n * m)
8+
// 공간 복잡도
9+
// Encoding: O(n * m),
10+
// Decoding: O(n * m)
11+
class Solution {
12+
13+
// 받아온 string 들을 한 문자열로 합침
14+
// (문자열길이)#(문자열) 형식
15+
public String encode(List<String> strs) {
16+
StringBuilder encodedStr = new StringBuilder();
17+
for (String str : strs) {
18+
encodedStr.append(str.length()).append('#').append(str);
19+
}
20+
return encodedStr.toString();
21+
}
22+
23+
// Decodes a single string to a list of strings
24+
public List<String> decode(String s) {
25+
List<String> result = new ArrayList<>();
26+
int i = 0;
27+
28+
while (i < s.length()) {
29+
30+
int j = i;
31+
while (s.charAt(j) != '#') { // # 문자 찾기
32+
j++;
33+
}
34+
35+
// 문자열 길이 추출
36+
int length = Integer.parseInt(s.substring(i, j));
37+
38+
// 위에서 구한 문자열 길이만큼 문자열 추출
39+
result.add(s.substring(j + 1, j + 1 + length));
40+
41+
// i 위치 변경
42+
i = j + 1 + length;
43+
}
44+
45+
return result;
46+
}
47+
48+
}

0 commit comments

Comments
 (0)