TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl
时,它将返回一个简化的URL http://tinyurl.com/4e9iAk
.
要求:设计一个 TinyURL 的加密 encode
和解密 decode
的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。
Related Topics
public class LeetCode535Test {
private static String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private static HashMap<String,String> urlToTiny = new HashMap<>();
private static HashMap<String,String> tinyToUrl = new HashMap<>();
private static String to62Str(Long num){
StringBuilder sb = new StringBuilder();
int remainder = 0;
int scale = chars.length();
while (num > scale - 1) {
remainder = Long.valueOf(num % scale).intValue();
sb.append(chars.charAt(remainder));
num = num / scale;
}
sb.append(chars.charAt(num.intValue()));
return sb.reverse().toString();
}
// Encodes a URL to a shortened URL.
public String encode(String longUrl) {
if (urlToTiny.containsKey(longUrl)){
return urlToTiny.get(urlToTiny);
}
Long nanoTime = System.nanoTime();
String key = to62Str(nanoTime);
// System.out.println(key);
urlToTiny.put(longUrl,key);
tinyToUrl.put(key,longUrl);
return key;
}
// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
if (tinyToUrl.containsKey(shortUrl)){
return tinyToUrl.get(shortUrl);
}
return null;
}
}
这题比较简单,简单的Hash映射
发表评论