535. Encode and Decode TinyURL

题目描述:给一个长的URL地址,设计encode 和 decode函数把它缩短,使得缩短前后的地址一一对应。即如下代码可以返回原串:

codec = Codec()
codec.decode(codec.encode(url))

分析:题目并没有指定用什么对应方法,只要通过原URL能找到对应缩短的URL,通过缩短的URL可以返回原URL即可。

方法一:在两个函数中并不做处理,直接返回传来的参数串。偷懒的方法,严格说不符合题目要求,但复杂度肯定最低。代码:

class Codec:
    def encode(self, longUrl):
        """Encodes a URL to a shortened URL.
        :type longUrl: str
        :rtype: str
        """
        return longUrl

    def decode(self, shortUrl):
        """Decodes a shortened URL to its original URL.
        :type shortUrl: str
        :rtype: str
        """
        return shortUrl

方法二:取URL的第一个‘/’以前的部分,再加上此串在输入中的序号。首先给类添加初始化函数,里面声明一个列表存储输入的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)
        #从0开始
        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
        """
        #先获取该shortUrl的序号
        return self.urls[int(shortUrl.split('/')[-1])]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,079评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,768评论 19 139
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 9,229评论 0 7
  • 有些事我时间一久就会记不住!这个需要每天写日记来进行记忆。 就拿充饭卡来说。。。。就忘了。这是多么痛的领悟。饭卡先...
    阳光下奔跑的孩子阅读 1,209评论 0 0
  • “这太黑了,我害怕……” “这人好多,我害怕……” “我不敢说……我害怕……” “我不敢问……我害怕……” …… ...
    依诺king阅读 3,214评论 0 3