← All problems

535. Encode and Decode Tinyurl

MediumOpen on LeetCodeProblem statement

Problem Statement

535. Encode and Decode TinyURL

Medium


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 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:

 

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 deconding it.

 

Constraints:

JavaScript

Source file
/**
 * Encodes a URL to a shortened URL.
 *
 * @param {string} longUrl
 * @return {string}
 */
 var encrypt = [];
 const alphaNumeric = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"];
 var encode = function(longUrl) {
    var shortUrl = "";
    for(var i=0; i<6; i++){
        var random = Math.floor(Math.random() * alphaNumeric.length);
        shortUrl += alphaNumeric[random];
    }
     encrypt[shortUrl] = longUrl;
     console.log(shortUrl);
     return ("http://tinyurl.com/" + shortUrl);
 };
 
 /**
  * Decodes a shortened URL to its original URL.
  *
  * @param {string} shortUrl
  * @return {string}
  */
 var decode = function(shortUrl) {
     return (encrypt[shortUrl.replace("http://tinyurl.com/","")]);
 };
 
 /**
  * Your functions will be called as such:
  * decode(encode(url));
  */