290. Word Pattern and 205. Isomorphic Strings

放一起写是因为这两个问题很像,都是利用hashset解决的问题,不过用的时候才发现对python的hash还是不太熟,太多语法糖不会用了,这个问题只能慢慢看别人的Solutions解决了,没啥好办法。

  1. Isomorphic Strings
    给定字符串s和t,输出BOOL决定它们是否同构。同构是指的s可以通过字母替换变成t,替换的时候,两个字母不能替换成同一个,但字母可以替换成和自身相同的字母(同时遵守前一条)。

先放自己的代码,就是利用dict当hashmap:

    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        length = len(s)
        usedCharIns = {}
        usedCharInt = {}
        for i in range(length):
            if s[i] not in usedCharIns:
                usedCharIns[s[i]] = t[i]
            elif usedCharIns[s[i]] != t[i]:
                    return False

            if t[i] not in usedCharInt:
                usedCharInt[t[i]] = s[i]
            elif usedCharInt[t[i]] != s[i]:
                    return False
        return True

但是看Solutions里有巧的多的方法。。。。。。只用一行python

    def isIsomorphic3(self, s, t):
         return len(set(zip(s, t))) == len(set(s)) == len(set(t))

Word Pattern也是一样的问题,只是把字符串t换成了用空格隔开的字符串

def wordPattern(self, pattern, str):
    s = pattern
    t = str.split()
    return len(set(zip(s, t))) == len(set(s)) == len(set(t)) and len(s) == len(t)

结论是还要对python的语言特性多学习,什么map,set,zip,tuple,lambda之类的和其他语言不太一样的地方。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,638评论 1 118
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,763评论 0 5
  • 两本不错的书: 《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。 《Python核心编程...
    静熙老师哈哈哈阅读 3,390评论 0 80
  • 我很想问她一句“你恨他们吗?” 然而我没有,因为我知道她肯定早就为他们找好了理由,不管她自己相不相信。作为一个明事...
    利兹阅读 626评论 16 16