13. Encode and Decode TinyURL
Solution:
class Solution
{
public:
// Encodes a URL to a shortened URL.
string chars = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int len = chars.length();
string baseUrl = "http://tinyUrl.com/";
unordered_map<string, string> shortner;
unordered_map<string, string> revKey;
string encode(string longUrl)
{
if (revKey.find(longUrl) != revKey.end())
{
string key = revKey[longUrl];
return baseUrl + key;
}
string key = "";
for (int i = 0; i < 6; i++)
{
char ch = chars[rand() % len];
key += ch;
}
if (shortner.find(key) == shortner.end())
{
shortner.insert({key, longUrl});
revKey.insert({longUrl, key});
}
return baseUrl + key;
}
// Decodes a shortened URL to its original URL.
string decode(string shortUrl)
{
string key = shortUrl.substr(19, 6);
string longUrl = shortner[key];
return longUrl;
}
};Last updated