1
+ import java .util .ArrayList ;
2
+ import java .util .List ;
3
+
4
+ class SolutionEncodeAndDecodeStrings {
5
+ private static final char SEPERATOR = '/' ;
6
+ /*
7
+ * @param strs: a list of strings
8
+ * @return: encodes a list of strings to a single string.
9
+ */
10
+ // 풀이: 문자열 길이를 구분자와 함께 encode해 decode시 문자열 길이를 참고할 수 있도록 한다
11
+ // 시간복잡도: O(N), 공간복잡도: O(1)
12
+ public String encode (List <String > strs ) {
13
+ // write your code here
14
+ var answer = new StringBuilder ();
15
+
16
+ for (var str : strs ) {
17
+ answer .append (str .length ())
18
+ .append (str )
19
+ .append (SEPERATOR );
20
+ }
21
+
22
+ return answer .toString ();
23
+ }
24
+
25
+ /*
26
+ * @param str: A string
27
+ * @return: decodes a single string to a list of strings
28
+ */
29
+ // 풀이: 문자열 길이를 구분자와 함께 encode해 decode시 문자열 길이를 참고할 수 있도록 한다
30
+ // 시간복잡도: O(N), 공간복잡도: O(N)
31
+ public List <String > decode (String str ) {
32
+ // write your code here
33
+ List <String > answer = new ArrayList <>();
34
+ var charArray = str .toCharArray ();
35
+ for (int i =0 ; i <charArray .length ; i ++) {
36
+ if (charArray [i ] == SEPERATOR ) {
37
+ var size = (int ) charArray [i -1 ];
38
+ char [] word = new char [size ];
39
+ System .arraycopy (charArray , i + 1 , word , 0 , size );
40
+
41
+ i +=size ;
42
+ answer .add (String .valueOf (word ));
43
+ }
44
+ }
45
+
46
+ return answer ;
47
+ }
48
+ }
0 commit comments