Design an algorithm to encode a list of strings to a string. The encoded string is then sent over the network and is decoded back to the original list of strings.
strs[i] contains any possible characters out of 256 valid ASCII characters.
Follow up: Could you write a generalized algorithm to work on any possible set of characters?
ac
publicclassCodec {// Encodes a list of strings to a single string.publicStringencode(List<String> strs) {StringBuilder sb =newStringBuilder();sb.append(strs.size() +"/");for (String s : strs) {sb.append(s.length() +"/"); }for (String s : strs) {sb.append(s); }returnsb.toString(); }// Decodes a single string to a list of strings.publicList<String> decode(String s) {List<String> res =newArrayList<String>();StringBuilder sb =newStringBuilder();int stringCnt =-1;List<Integer> strLens =newArrayList<Integer>();int lenCnt =0;int i =0;for (; i <s.length(); i++) {if (s.charAt(i) =='/') {int num =Integer.parseInt(sb.toString());sb.setLength(0);if (stringCnt ==-1) { stringCnt = num; } elseif (lenCnt < stringCnt) {strLens.add(num); lenCnt++;if (lenCnt == stringCnt) break; }continue; }sb.append(s.charAt(i)); } i++;// cut stringsfor (int len : strLens) {res.add(s.substring(i, i+len)); i += len; }return res; }}// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.decode(codec.encode(strs));