// Encodes a list of strings to a single string. public String encode(List<String> strs) { if (strs.size() == 0) return Character.toString((char) 258); Stringdelimiter= Character.toString((char) 257); StringBuilderans=newStringBuilder(); for (String str : strs) { ans.append(str); ans.append(delimiter); } ans.deleteCharAt(ans.length() - 1); return ans.toString(); }
// Decodes a single string to a list of strings. public List<String> decode(String s) { if (s.equals(Character.toString((char) 258))) returnnewArrayList<>(); List<String> ans = newArrayList<>(); Stringdelimiter= Character.toString((char) 257); ans = Arrays.asList(s.split(delimiter, -1)); return ans; } }
privateintstringToint(String bytes) { intans=0; for (char b : bytes.toCharArray()) { ans <<= 8; ans += (int) b; } return ans; }
// Encodes a list of strings to a single string. public String encode(List<String> strs) { StringBuilderans=newStringBuilder(); for (String str : strs) { ans.append(intToString(str)); ans.append(str); } return ans.toString(); }
// Decodes a single string to a list of strings. public List<String> decode(String s) { intpos=0; List<String> ans = newArrayList<>(); while (pos < s.length()) { intstrLength= stringToint(s.substring(pos, pos + 4)); pos += 4; ans.add(s.substring(pos, pos + strLength)); pos += strLength; } return ans; } }