535. Encode and Decode TinyURL

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.

Solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Codec:
code_db, url_db = {}, {}
chars = string.ascii_letters + string.digits

def getCode(self) -> str:
code = ''.join(random.choice(self.chars) for i in range(6))
return code

def encode(self, longUrl: str) -> str:
"""Encodes a URL to a shortened URL.
"""
if longUrl in self.url_db:
return self.url_db[longUrl]
code = self.getCode()
self.code_db[code] = longUrl
self.url_db[longUrl] = code
return code

def decode(self, shortUrl: str) -> str:
"""Decodes a shortened URL to its original URL.
"""
return self.code_db[shortUrl]
# Your Codec object will be instantiated and called as such:
# codec = Codec()
# codec.decode(codec.encode(url))

references

Commentaires

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×