美文网首页
290. Word Pattern and 205. Isomo

290. Word Pattern and 205. Isomo

作者: byr_hfaltgg | 来源:发表于2017-06-29 04:10 被阅读0次

    放一起写是因为这两个问题很像,都是利用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之类的和其他语言不太一样的地方。

    相关文章

      网友评论

          本文标题:290. Word Pattern and 205. Isomo

          本文链接:https://www.haomeiwen.com/subject/pqnpcxtx.html