1. 程式人生 > >535. TinyURL 的加密與解密(JavaScript)

535. TinyURL 的加密與解密(JavaScript)

TinyURL是一種URL簡化服務, 比如:當你輸入一個URL https://leetcode.com/problems/design-tinyurl 時,它將返回一個簡化的URL http://tinyurl.com/4e9iAk.

要求:設計一個 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密演算法如何設計和運作是沒有限制的,你只需要保證一個URL可以被加密成一個TinyURL,並且這個TinyURL可以用解密方法恢復成原本的URL。

思路:

由於加密解密演算法不是重點,所以採用最簡單的,把所有加密過的url放入一個數組。

建立一個全域性變數 map陣列,存放所有加密的url,加密演算法就是把 url 放入map中,並返回 "http://tinyurl.com/" +索引值。

解密演算法就是通過索引找到加密前的url。

/**
 * Encodes a URL to a shortened URL.
 *
 * @param {string} longUrl
 * @return {string}
 */
var encode = function(longUrl) {
  map[i] = longUrl
  return `http://tinyurl.com/${i++}`;
};

/**
 * Decodes a shortened URL to its original URL.
 *
 * @param {string} shortUrl
 * @return {string}
 */
var decode = function(shortUrl) {
  return map[shortUrl.replace("http://tinyurl.com/","")]
};

/**
 * Your functions will be called as such:
 * decode(encode(url));
 */
var map = [];
var i = 0;