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,616評論 1 118
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,268評論 0 4
  • 最近在慕課網學習廖雪峰老師的Python進階課程,做筆記總結一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,735評論 0 5
  • 兩本不錯的書: 《Python參考手冊》:對Python各個標準模塊,特性介紹的比較詳細。 《Python核心編程...
    靜熙老師哈哈哈閱讀 3,386評論 0 80
  • 我很想問她一句“你恨他們嗎?” 然而我沒有,因為我知道她肯定早就為他們找好了理由,不管她自己相不相信。作為一個明事...
    利茲閱讀 620評論 16 16