Custom URL
自定义短链接时,首先应该先查询customTable看是否有匹配对,有直接返回,没有或只有key和value中一个则返回error,最后再建立新的链接,另外因为长短查询都有需求,这里必须建立四个dict分别记录对应关系
import random
class TinyUrl2:
customShortToLong = {}
customLongToShort = {}
generatorShortToLongTable = {}
generatorLongToShortTable = {}
charList = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
prefix = 'http://tiny.url/'
# @param long_url a long url
# @param a short key
# @return a short url starts with http://tiny.url/
def createCustom(self, long_url, short_key):
# Write your code here
if long_url in self.customLongToShort and self.prefix + short_key in self.customShortToLong:
return self.prefix + short_key if self.customLongToShort[long_url] == self.prefix + short_key else 'error'
if long_url in self.customLongToShort:
return 'error'
if long_url in self.generatorLongToShortTable:
return 'error'
if self.prefix + short_key in self.customShortToLong:
return 'error'
if self.prefix + short_key in self.generatorShortToLongTable:
return 'error'
self.customShortToLong[self.prefix + short_key] = long_url
self.customLongToShort[long_url] = self.prefix + short_key
return self.prefix + short_key
# @param {string} long_url a long url
# @return {string} a short url starts with http://tiny.url/
def longToShort(self, long_url):
# Write your code here
if long_url in self.customLongToShort:
return self.customLongToShort[long_url]
if long_url in self.generatorLongToShortTable:
return self.generatorLongToShortTable[long_url]
shortUrl = ''
for i in xrange(6):
shortUrl += random.choice(self.charList)
self.generatorShortToLongTable[self.prefix + shortUrl] = long_url
self.generatorLongToShortTable[long_url] = self.prefix + shortUrl
return self.prefix + shortUrl
# @param {string} short_url a short url starts with http://tiny.url/
# @return {string} a long url
def shortToLong(self, short_url):
# Write your code here
if short_url in self.customShortToLong:
return self.customShortToLong[short_url]
return self.generatorShortToLongTable[short_url]