535. Encode and Decode TinyURL
来源:互联网 发布:网络信息安全漫画 编辑:程序博客网 时间:2024/06/02 01:09
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 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加密之后生成的shortUrl解密之后仍为原来的URL;
思路1:无招胜有招,对于要加密的URL,直接输出其原型;
class Solution {public: // Encodes a URL to a shortened URL. string encode(string longUrl) { return longUrl; } // Decodes a shortened URL to its original URL. string decode(string shortUrl) { return shortUrl; }};// Your Solution object will be instantiated and called as such:// Solution solution;// solution.decode(solution.encode(url));
思路2:参考别人的代码,可以生成一个随机的字符串,使得其唯一映射到原URL,并建立map,保存从正常URL到randstr的映射,以及randstr到正常URL的映射即可。
class Solution {private: unordered_map<string, string> long2short, short2long; string dict;public: Solution(){ dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; long2short.clear(); short2long.clear(); srand(time(NULL)); } // Encodes a URL to a shortened URL. string encode(string longUrl) { if (long2short.count(longUrl)){ return "http://tinyurl.com/" + long2short[longUrl]; } string randstr; for (int i = 0; i < 6; i++)randstr.push_back(dict[rand() % 62]); int index = 0; while (short2long.count(randstr)){ randstr[index] = dict[rand() % 62]; index = (index + 1) % 5; } short2long[randstr] = longUrl; long2short[longUrl] = randstr; return "http://tinyurl.com/" + randstr; } // 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; }};
阅读全文
0 0
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- Encode and Decode TinyURL
- Encode and Decode TinyURL
- Encode and Decode TinyURL
- leetcode题解-535. Encode and Decode TinyURL
- 【LeetCode】535. Encode and Decode TinyURL
- LeetCode:535. Encode and Decode TinyURL
- Leetcode 535. Encode and Decode TinyURL
- 简单关于原型链学习总结
- Synchronized 很重要!
- leapmotion驱动安装
- 新手基础(二)Head First Java练习:public class Mix4
- 根据指定的学科, 取出点击量前三的
- 535. Encode and Decode TinyURL
- 【队列】之链式存储结构
- Nginx安装
- springboot零侵入配置mybatis插件
- 洛谷 P1731 生日蛋糕
- 使用Http访问网络并且使用正则获取需要用到的图片链接
- [Hackerrank题目选做] Kundu and Tree 组合数学
- 欢迎使用CSDN-markdown编辑器
- uwp开发之Windows.Data.Json解析json