File tree Expand file tree Collapse file tree
encode-and-decode-strings Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import java .util .*;
2+
3+ // TC: O(n)
4+ // SC: O(n)
5+ class Solution {
6+
7+ private static final String DELIMITER = "," ;
8+
9+ // ["mydata"] -> "6,mydata"
10+ public String encode (List <String > strs ) {
11+ StringBuilder sb = new StringBuilder ();
12+ for (String s : strs ) {
13+ sb .append (s .length ()).append (DELIMITER ).append (s );
14+ }
15+ return sb .toString ();
16+ }
17+
18+ // "6,mydata" -> ["mydata"]
19+ public List <String > decode (String str ) {
20+ List <String > answer = new ArrayList <>();
21+
22+ int cursor = 0 ;
23+ while (cursor < str .length ()) {
24+ int indexOfDelimiter = str .indexOf (DELIMITER , cursor );
25+ int dataStart = indexOfDelimiter + 1 ;
26+ int dataLength = Integer .parseInt (str .substring (cursor , indexOfDelimiter ));
27+
28+ answer .add (str .substring (dataStart , dataStart + dataLength ));
29+ cursor = dataStart + dataLength ;
30+ }
31+
32+ return answer ;
33+ }
34+ }
You can’t perform that action at this time.
0 commit comments