535. Encode and Decode TinyURL
2018-03-28 10:33
531 查看
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.
另解:
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.
class Codec: def __init__(self): self.urls = [] def encode(self, longUrl): """Encodes a URL to a shortened URL. :type longUrl: str :rtype: str """ self.urls.append(longUrl) return "http://tinyurl.com/" + str(len(self.urls)-1) def decode(self, shortUrl): """Decodes a shortened URL to its original URL. :type shortUrl: str :rtype: str """ return self.urls[int(shortUrl.split('/')[-1])] # Your Codec object will be instantiated and called as such: # codec = Codec() # codec.decode(codec.encode(url))
另解:
import random, string class Codec: alphabet = string.ascii_letters + string.digits def __init__(self): self.url2code = {} self.code2url = {} def encode(self, longUrl): """Encodes a URL to a shortened URL. :type longUrl: str :rtype: str """ while longUrl not in self.url2code: code = ''.join(random.choice(Codec.alphabet) for _ in range(6)) if code not in self.code2url: self.url2code[longUrl] = code self.code2url[code] = longUrl return "http://tinyurl.com/" + self.url2code[longUrl] def decode(self, shortUrl): """Decodes a shortened URL to its original URL. :type shortUrl: str :rtype: str """ return self.code2url[shortUrl[-6:]]
相关文章推荐
- LeetCode 535. Encode and Decode TinyURL对随机编码的思考
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 【LeetCode】535. Encode and Decode TinyURL
- 535 Encode and Decode TinyURL
- LeetCode:535. Encode and Decode TinyURL
- Math-535-Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- Leetcode刷题之路(Python)——535. Encode and Decode TinyURL
- python--leetcode 535. Encode and Decode TinyURL
- HashTable-535-Encode and Decode TinyURL
- leetcode题解-535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 【LeetCode】535. Encode and Decode TinyURL
- leetcode535 Encode and Decode TinyURL java
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- leetcode 535. Encode and Decode TinyURL