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映射
发表评论