题目描述:
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.
随机生成固定长度的token表示编码后的URL,同时用哈希表存储URL编码和解码对应的结果。
class Solution {
public:
// Encodes a URL to a shortened URL.
string encode(string longUrl) {
if(long_to_short.count(longUrl)) return long_to_short[longUrl];
else
{
string s;
for(int i=0;i<8;i++) s.push_back(chars[rand()%chars.size()]);
if(long_to_short.count(s)>0) return encode(longUrl);
else
{
long_to_short[longUrl]=s;
short_to_long[s]=longUrl;
}
return s;
}
}
// Decodes a shortened URL to its original URL.
string decode(string shortUrl) {
return short_to_long[shortUrl];
}
private:
unordered_map<string,string> short_to_long;
unordered_map<string,string> long_to_short;
string chars="0123456789abcdefghijklmnopqrstuvwxyz";
};
本文介绍了一种URL缩短服务的设计方案,使用TinyURL将长URL转换为短链接,并确保其可逆性。通过随机生成固定长度的token表示编码后的URL,结合哈希表存储编码和解码对应关系,实现了URL的高效编码与解码。

被折叠的 条评论
为什么被折叠?



