[leetcode] 535. Encode and Decode TinyURL

网友投稿 306 2022-11-29

[leetcode] 535. Encode and Decode TinyURL

Description

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 ​​and it returns a short URL such as ​​the encode and decode methods for the TinyURL service. 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.

分析

题目的意思是:给定一个url,编码乘TinyURL,并且保证TinyURL能够解码回来。

这道题我也不怎么会,后面发现别人做得也是很简单的,encode阶段,如果该url已经编码了,则直接返回已经编码的url,如果没有,则生成随机数,然后判断随机数是否已经生成,如果生成了,则重新生成,然后存入url 的short long和long short的键值对

代码

class Solution {private: unordered_map short2long,long2short; string dict;public: Solution(){ dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; short2long.clear(); long2short.clear(); srand(time(NULL)); } // Encodes a URL to a shortened URL. string encode(string longUrl) { if(long2short.count(longUrl)){ return "+ long2short[longUrl]; } string randStr; for(int i=0;i<6;i++){ randStr.push_back(dict[rand()%62]); } int idx=0; while(short2long.count(randStr)){ randStr[idx]=dict[rand()%62]; idx=(idx+1)%5; } short2long[randStr]=longUrl; long2short[longUrl]=randStr; return "+ long2short[longUrl]; } // Decodes a shortened URL to its original URL. string decode(string shortUrl) { string randStr=shortUrl.substr(shortUrl.find_last_of("/")+1); return short2long.count(randStr) ? short2long[randStr]:shortUrl; }};// Your Solution object will be instantiated and called as such:// Solution solution;// solution.decode(solution.encode(url));

参考文献

​​[LeetCode] Encode and Decode TinyURL 编码和解码精简URL地址​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode] 1625. Lexicographically Smallest String After Applying Operations
下一篇:Spring中的PathVariable注释解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~