LeetCode 535. Encode and Decode TinyURL对随机编码的思考
2018-03-19 22:04
756 查看
题目:Note: This is a companion problem to the System Design problem: Design TinyURL.TinyURL is a URL shortening service where you enter a URL such as
大意:1.要根据系统设计的方式,用Base62的char来encode,还有需要让长URL得到6位的相同url。代码
代码参考https://www.cnblogs.com/EdwardLiu/p/6533835.html其实更简单的还可以用动态链表之类的。但是吧,这方面应用还是很广的啊,最常见的微博,微信为了省略冗长的网站URL,自动变成了很短的URL,用random62按照题目要求一一实现映射其实就是这样,保证了每一个URL的唯一性,不会跳错网站,不错的启发。
https://leetcode.com/problems/design-tinyurland it returns a short URL such as
http://tinyurl.com/4e9iAk.Design the
encodeand
decodemethods 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.
大意:1.要根据系统设计的方式,用Base62的char来encode,还有需要让长URL得到6位的相同url。代码
public class Codec { HashMap<String,String> hashToUrl=new HashMap<String,String>(); HashMap<String,String> urlToHash=new HashMap<String,String>(); String tinyUrlBase="http://tinyurl.com/"; String characters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random=new Random(); // Encodes a URL to a shortened URL. public String encode(String longUrl) { if(urlToHash.containsKey(longUrl)){ return tinyUrlBase + urlToHash.get(longUrl); } StringBuilder hash=new StringBuilder(); do{ for (int i=0; i<6; i++) hash.append(characters.charAt(random.nextInt(characters.length()))); }while (hashToUrl.containsKey(hash.toString())); hashToUrl.put(hash.toString(), longUrl); urlToHash.put(longUrl, hash.toString()); return tinyUrlBase + hash.toString(); } // Decodes a shortened URL to its original URL. public String decode(String shortUrl) { return hashToUrl.get(shortUrl.substring(tinyUrlBase.length())); } } // Your Codec object will be instantiated and called as such: // Codec codec = new Codec(); // codec.decode(codec.encode(url));
代码参考https://www.cnblogs.com/EdwardLiu/p/6533835.html其实更简单的还可以用动态链表之类的。但是吧,这方面应用还是很广的啊,最常见的微博,微信为了省略冗长的网站URL,自动变成了很短的URL,用random62按照题目要求一一实现映射其实就是这样,保证了每一个URL的唯一性,不会跳错网站,不错的启发。
相关文章推荐
- LeetCode 535: Encode and Decode TinyURL
- python--leetcode 535. Encode and Decode TinyURL
- Leetcode 535. Encode and Decode TinyURL
- leetcode 535. Encode and Decode TinyURL
- LeetCode:535. Encode and Decode TinyURL
- 20170613-leetcode-535-Encode and Decode TinyURL
- leetcode题解-535. Encode and Decode TinyURL
- leetcode 535. Encode and Decode TinyURL
- leetcode535 Encode and Decode TinyURL java
- 【LeetCode】535. Encode and Decode TinyURL
- Leetcode 535 Encode and Decode TinyURL
- 【LeetCode】535. Encode and Decode TinyURL
- LeetCode 535 Encode and Decode TinyURL (HashMap)
- Leetcode刷题之路(Python)——535. Encode and Decode TinyURL
- HashTable-535-Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL