Encode and Decode Strings
题目地址:
https://leetcode.com/problems/encode-and-decode-strings/#/description
题目:
解题思路:
这道题就是用自己想的一个方法来存。one,two,three -> 3/one3/two5/three。主要就是先拿slash的index,然后parse出size,然后从slash的index往后找存储的string。
代码:
https://leetcode.com/problems/encode-and-decode-strings/#/description
题目:
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.
Machine 1 (sender) has the function:
string encode(vector<string> strs) {
// ... your code
return encoded_string;
}
Machine 2 (receiver) has the function:vector<string> decode(string s) {
//... your code
return strs;
}
So Machine 1 does:
string encoded_string = encode(strs);
and Machine 2 does:
vector<string> strs2 = decode(encoded_string);
strs2 in Machine 2 should be the same as strs in Machine 1.
Implement the
encode and decode methods.
Note:
- The string may contain any possible characters out of 256 valid ascii characters. Your algorithm should be generalized enough to work on any possible characters.
- Do not use class member/global/static variables to store states. Your encode and decode algorithms should be stateless.
- Do not rely on any library method such as
evalor serialize methods. You should implement your own encode/decode algorithm.
解题思路:
这道题就是用自己想的一个方法来存。one,two,three -> 3/one3/two5/three。主要就是先拿slash的index,然后parse出size,然后从slash的index往后找存储的string。
代码:
public String encode(List<String> strs) { StringBuilder sb = new StringBuilder(); for(String str : strs){ sb.append(str.length()).append('/').append(str); } return sb.toString(); } public List<String> decode(String s) { List<String> rst = new ArrayList<String>(); int i = 0; while(i <= s.length() - 1){ // indexOf('/', i) -> from index i, the first position of '/' int slash = s.indexOf('/', i); int size = Integer.valueOf(s.substring(i, slash)); rst.add(s.substring(slash + 1, slash + size + 1)); i = slash + size + 1; } return rst; }

Comments
Post a Comment