Encode and Decode TinyURL
作者:互联网
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/discuss/100270/Three-different-approaches-in-java
Approach 1- Using simple counter
1 public class Codec { 2 Map<Integer, String> map = new HashMap<>(); 3 int i=0; 4 public String encode(String longUrl) { 5 map.put(i,longUrl); 6 return "http://tinyurl.com/"+i++; 7 } 8 public String decode(String shortUrl) { 9 return map.get(Integer.parseInt(shortUrl.replace("http://tinyurl.com/", ""))); 10 } 11 }
Approach 2- using hashcode
1 public class Codec { 2 Map<Integer, String> map = new HashMap<>(); 3 public String encode(String longUrl) { 4 map.put(longUrl.hashCode(),longUrl); 5 return "http://tinyurl.com/"+longUrl.hashCode(); 6 } 7 public String decode(String shortUrl) { 8 return map.get(Integer.parseInt(shortUrl.replace("http://tinyurl.com/", ""))); 9 }
Approach 3- using random function
1 public class Codec { 2 Map<Integer, String> map = new HashMap<>(); 3 Random r=new Random(); 4 int key=r.nextInt(10000); 5 public String encode(String longUrl) { 6 while(map.containsKey(key)) { 7 key= r.nextInt(10000);
} 8 map.put(key,longUrl); 9 return "http://tinyurl.com/"+key; 10 } 11 public String decode(String shortUrl) { 12 return map.get(Integer.parseInt(shortUrl.replace("http://tinyurl.com/", ""))); 13 } 14 }
标签:map,String,tinyurl,longUrl,Decode,TinyURL,Encode,com,public 来源: https://www.cnblogs.com/beiyeqingteng/p/10422106.html