Last updated on October 5th, 2024 at 06:04 pm
Here, We see Encode and Decode TinyURL LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Hash Table, Math
Companies
Amazon, Facebook, Google, Uber
Level of Question
Medium
Encode and Decode TinyURL LeetCode Solution
Table of Contents
Problem Statement
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 a class to encode a URL and decode a tiny URL.
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.
Implement the Solution
class:
Solution()
Initializes the object of the system.String encode(String longUrl)
Returns a tiny URL for the givenlongUrl
.String decode(String shortUrl)
Returns the original long URL for the givenshortUrl
. It is guaranteed that the givenshortUrl
was encoded by the same object.
Example 1:
Input: url = “https://leetcode.com/problems/design-tinyurl”
Output: “https://leetcode.com/problems/design-tinyurl”
Explanation:
Solution obj = new Solution(); string tiny = obj.encode(url); // returns the encoded tiny URL.
string ans = obj.decode(tiny); // returns the original url after decoding it.
1. Encode and Decode TinyURL LeetCode Solution C++
class Solution { public: map<int, string> m; string encode(string longUrl) { m[m.size()] = longUrl; return "http://tinyurl.com/" + to_string(m.size() - 1); } string decode(string shortUrl) { int idx = shortUrl.rfind('/'); return m[stoi(shortUrl.substr(idx + 1))]; } };
2. Encode and Decode TinyURL LeetCode Solution Java
public class Codec { Map<String, String> codeDB = new HashMap<>(), urlDB = new HashMap<>(); static final String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private String getCode() { char[] code = new char[6]; for (int i = 0; i < 6; i++) code[i] = chars.charAt((int)(Math.random() * 62)); return "http://tinyurl.com/" + String.valueOf(code); } public String encode(String longUrl) { if (urlDB.containsKey(longUrl)) return urlDB.get(longUrl); String code = getCode(); while (codeDB.containsKey(code)) code = getCode(); codeDB.put(code, longUrl); urlDB.put(longUrl, code); return code; } public String decode(String shortUrl) { return codeDB.get(shortUrl); } }
3. Encode and Decode TinyURL Solution JavaScript
let hashMap = new Map() var encode = function(longUrl) { const code = Math.random().toString(32).slice(5) const tinyUrl = `https://tinyurl.com/${code}` hashMap.set(tinyUrl,longUrl) return tinyUrl }; var decode = function(shortUrl) { return hashMap.get(shortUrl) };
4. Encode and Decode TinyURL Solution Python
class Codec: codeDB, urlDB = defaultdict(), defaultdict() chars = string.ascii_letters + string.digits def getCode(self): code = ''.join(random.choice(self.chars) for i in range(6)) return "http://tinyurl.com/" + code def encode(self, longUrl): if longUrl in self.urlDB: return self.urlDB[longUrl] code = self.getCode() while code in self.codeDB: code = getCode() self.codeDB[code] = longUrl self.urlDB[longUrl] = code return code def decode(self, shortUrl): return self.codeDB[shortUrl]