解题思路:
利用python字典进行longUrl与shortUrl关系映射。
利用random.choices()生成shortUrl code。
import random
# Python Dictionary
# random.choices
class Codec:
def __init__(self):
self.l_s = {}
self.s_l = {}
# self.char_pool = "abcdefghijklmnopqrstuvwxyz1234567890"
# self.cha = [chr(i) for i in range(97,123)]
# self.Cha = [chr(i) for i in range(65,91)]
# self.num = [chr(i) for i in range(48,58)]
# self.char_pool = self.cha + self.Cha + self.num
self.char_pool = "".join([chr(i) for i in range(97,123)]) + "".join([chr(i) for i in range(65,91)]) + "".join([chr(i) for i in range(48,58)])
def encode(self, longUrl: str) -> str:
"""Encodes a URL to a shortened URL.
"""
while True:
s_code = "".join(random.choices(self.char_pool, k = 6))
if s_code not in self.l_s:
self.l_s[longUrl] = s_code
self.s_l[s_code] = longUrl
return "https://tinyurl.com/"+s_code
def decode(self, shortUrl: str) -> str:
"""Decodes a shortened URL to its original URL.
"""
return self.s_l[shortUrl[-6:]]
# Your Codec object will be instantiated and called as such:
# codec = Codec()
# codec.decode(codec.encode(url))