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.
Subscribe to see which companies asked this question.
对原URL进行编码,使得它变得尽量短。使用哈希表记录一个长URL的编号和用vector记录编号对应的长URL即可实现编码和解码。
代码:
class Solution
{
public:
string encode(string longUrl)
{
auto it = long2short.find(longUrl);
if(it != long2short.end())
return "http://tinyurl.com/" + to_string(it->second);
short2long.push_back(longUrl);
return "http://tinyurl.com/" + to_string(short2long.size());
}
string decode(string shortUrl)
{
int num = stoi(shortUrl.substr(19));
return short2long[num - 1];
}
private:
unordered_map<string, int> long2short;
vector<string> short2long;
};