• 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 };
  • 相关阅读:
    CodeSmith中SchemaExplorer属性的介绍
    Bugku-INSERT INTO 注入
    XCTF-PHP2
    网络安全实验室CTF-注入关
    XSS挑战
    SQL注入
    CTFHub-技能树-命令执行
    CTFHub-技能树-文件上传
    史上最难的一道Java面试题 (分析篇)
    高可用的一些思考和理解
  • 原文地址:https://www.cnblogs.com/cuancuancuanhao/p/8385821.html
Copyright © 2020-2023  润新知