2
2
import java .util .List ;
3
3
4
4
class SolutionEncodeAndDecodeStrings {
5
+
5
6
private static final char SEPERATOR = '/' ;
6
7
/*
7
8
* @param strs: a list of strings
@@ -14,9 +15,9 @@ public String encode(List<String> strs) {
14
15
var answer = new StringBuilder ();
15
16
16
17
for (var str : strs ) {
17
- answer .append (str . length () )
18
- .append (str )
19
- .append (SEPERATOR );
18
+ answer .append (SEPERATOR )
19
+ .append (str . length () )
20
+ .append (str );
20
21
}
21
22
22
23
return answer .toString ();
@@ -31,16 +32,12 @@ public String encode(List<String> strs) {
31
32
public List <String > decode (String str ) {
32
33
// write your code here
33
34
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
- }
35
+ var i = 0 ;
36
+ while (i < str .length ()) {
37
+ var seperatorIdx = str .indexOf (SEPERATOR , i ) + 1 ;
38
+ var size = Integer .parseInt (str .substring (seperatorIdx , seperatorIdx + 1 ));
39
+ i = seperatorIdx + size + 1 ;
40
+ answer .add (str .substring (seperatorIdx + 1 , i ));
44
41
}
45
42
46
43
return answer ;
0 commit comments