博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode刷题记录:编码并解码短网址
阅读量:7195 次
发布时间:2019-06-29

本文共 1524 字,大约阅读时间需要 5 分钟。

题目要求

编写一个类,提供两个方法。一个可以将普通的网址编码成短网址,一个可以将短网址还原为普通网址。

参考题解

# 使用随机函数,生成短网址,保存在dict中,避免重复import randomimport mathimport reclass Codec:    charbase = [x for x in "0123456789abcdefghijklmnopqrstuvwxyz"]     urldict = {}    longurldict = {}    def get_random_char(self, length):        random_char = ""        #print(len(self.charbase))        for x in range(6):            random_char += self.charbase[math.ceil(random.random() * len(self.charbase) ) - 1 ]        return random_char    def encode(self, longUrl):        if longUrl in self.longurldict:            return self.longurldict[longUrl]        url_code = self.get_random_char(6)        if url_code in self.urldict:            self.encode(longUrl)        else:            self.longurldict[longUrl] = url_code            self.urldict[url_code] = longUrl        return "http://tinyurl.com/" + url_code    def decode(self, shortUrl):        domain = "http://tinyurl.com/"        shortUrl = shortUrl.replace(domain, "")        if shortUrl in self.urldict:            return self.urldict[shortUrl]        else:            return falseurl = "https://leetcode.com/problems/design-tinyurl";codec = Codec()print(codec.get_random_char(6))print(codec.get_random_char(6))print(codec.get_random_char(6))print(codec.get_random_char(6))print(codec.get_random_char(6))print(codec.encode(url))print(codec.decode(codec.encode(url)))

我这个过程遇到一个坑,本地环境是Python3,math.ceil函数返回了整型数,Leetcode是Python2的环境,所以返回了浮点数,需要做一下类型转换。看了一下其他解题方法,其实可以直接用 hash 函数,不用考虑那么多。

本文为作者原创,如果您觉得本文对您有帮助,请随意打赏,您的支持将鼓励我继续创作。

39469-20170825142904777-1467390737.png

转载地址:http://fatkm.baihongyu.com/

你可能感兴趣的文章
Android中的DownloadManager
查看>>
[服务器开发]可伸缩系统的设计模式(译)
查看>>
【短语学习】狮子那一份the lions share
查看>>
poj1011
查看>>
class和struct
查看>>
潇洒人生“二十贵”
查看>>
poj1269
查看>>
压缩、解压缩流GZipStream
查看>>
js编程思路--把相同功能的代码,配置放到一个对象里
查看>>
Oracle性能优化
查看>>
拖动缩放[转]
查看>>
ASP.NET MVC---自定义HtmlHelper方法
查看>>
javaweb入门(4)-- 详细了解http协议2
查看>>
POJ-3686 The Windy's 犀利构图+KM
查看>>
重新认识c++的cin、cout
查看>>
poj1611
查看>>
多例设计模式与枚举
查看>>
【转】Scrum角色及其职责介绍
查看>>
【动画】【特效】activity跳转华丽的过渡效果(转载)
查看>>
使用Eclipse进行远程调试【转】
查看>>