您的位置:首页 > 其它

LeetCode 535 Encode and Decode TinyURL (HashMap)

2017-06-15 18:45 579 查看
TinyURL is a URL shortening service where you enter a URL such as 
https://leetcode.com/problems/design-tinyurl
 and
it returns a short URL such as 
http://tinyurl.com/4e9iAk
.

Design the 
encode
 and 
decode
 methods
for the TinyURL service. There is no restriction on how your encode/decode algorithm should work. You just need to ensure that a URL can be encoded to a tiny URL and the tiny URL can be decoded to the original URL.

题目链接:https://leetcode.com/problems/encode-and-decode-tinyurl/#/description
题目分析:按长度最短字典序递增的方式构造TinyURL
击败77.5%
public class Codec {

HashMap<String, String> dec = new HashMap<>();
HashMap<String, String> enc = new HashMap<>();

public String getNext(String cur) {
String code = enc.get(cur);
if (code == null) {
return "0";
}
int len = code.length();
char ch = code.charAt(len - 1);
String ans = "";
if (ch == '9') {
ans = code.substring(0, len - 1) + 'Z';
}
else if (ch == 'Z') {
ans = code.substring(0, len - 1) + 'z';
}
else if (ch == 'z') {
ans = code + '0';
} else {
ans = code.substring(0, len - 2) + (code.charAt(len - 1) + 1);
}
return ans;
}

// Encodes a URL to a shortened URL.
public String encode(String longUrl) {
String shortUrl = getNext(longUrl);
enc.put(longUrl, shortUrl);
dec.put(shortUrl, longUrl);
return shortUrl;
}

// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
return dec.get(shortUrl);
}
}

// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: