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.

 

 1 public class Codec {
 2     private const string pref = "http://tinyurl.com/";
 3     
 4     // in thoery should use a hash founction
 5     private int counter = 0;
 6     private Dictionary<int, string> hashToUrl = new Dictionary<int, string>();
 7     private Dictionary<string, int> urlToHash = new Dictionary<string, int>();
 8     
 9     // Encodes a URL to a shortened URL
10     public string encode(string longUrl) {
11         if (!urlToHash.ContainsKey(longUrl))
12         {
13             urlToHash[longUrl] = counter;
14             hashToUrl[counter] = longUrl;
15             counter++;    
16         }
17         
18         return pref + urlToHash[longUrl];
19     }
20 
21     // Decodes a shortened URL to its original URL.
22     public string decode(string shortUrl) {
23         int hash = Int32.Parse(shortUrl.Substring(19, shortUrl.Length - 19));
24         
25         return hashToUrl[hash];
26     }
27 }
28 
29 // Your Codec object will be instantiated and called as such:
30 // Codec codec = new Codec();
31 // codec.decode(codec.encode(url));

 

版权声明:本文为liangmou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liangmou/p/8175547.html