zoukankan      html  css  js  c++  java
  • 535. Encode and Decode TinyURL

    ▶ 要求给出一种对 URL 网址进行压缩和解压的算法,例如 https://leetcode.com/problems/design-tinyurl ←→ http://tinyurl.com/4e9iAk,在不允许打表的情况下应该无法压缩的。

    ● 代码,6 ms,完全不压缩,just for fun

    1 class Solution
    2 {
    3 public:
    4     // Encodes a URL to a shortened URL.
    5     string encode(string longUrl) { return longUrl; }
    6     // Decodes a shortened URL to its original URL.
    7     string decode(string shortUrl) { return shortUrl; }
    8 };
    1 class Solution
    2 {
    3 public:
    4     string theLatestUrl;
    5     string encode(string longUrl) { theLatestUrl = longUrl; return "whatever, doesn't matter"; }
    6     string decode(string shortUrl) { return theLatestUrl; }
    7 };

    ● 代码,9 ms,随机数打表法,加密之后的字符串只与原网址字符串在表中的存放位置有关,与其内容无关。类似的有各种打表法,需要依赖散列表来解码,时间复杂度 O(1),空间开销大。

     1 class Solution
     2 {
     3 public:
     4     unordered_map<string, string> um;    
     5     string encode(string longUrl)
     6     {        
     7         const string baseUrl = "http://tinyurl.com/";
     8         int r;
     9         string ran;
    10         srand(1); 
    11         for (r = rand() % 100000, ran = to_string(r); um.count(baseUrl + ran) == 1; r = rand() % 100000, ran = to_string(r));
    12             // 随机取一个空的位置把网址放进去
    13         um[baseUrl + ran] = longUrl;
    14         return baseUrl + ran;
    15     }    
    16     string decode(string shortUrl)
    17     {
    18         if (um.count(shortUrl) == 1)
    19             return um[shortUrl];
    20         return "";
    21     }
    22 };
  • 相关阅读:
    QT POST/GET HTTP操作
    PHP生成json
    Windows 获取进程ID
    易语言 多个窗口
    易语言 内存修改框架
    易语言 MD5生成
    易语言 获取验证码
    易语言网页登录 POST
    cs1.6 8倍镜
    HTMLTestRunner.py(Python3)
  • 原文地址:https://www.cnblogs.com/cuancuancuanhao/p/8385821.html
Copyright © 2011-2022 走看看