leetcode刷題--Isomorphic Strings

黃思喆發表於2015-05-13

題目:給定兩個字串s和t,判斷它們是否是同構的。

ps:所謂同構就是說有相同的結構,比如:asfsa 和 12321 。可以看作是一種對映關係,在這組字串中,a對應的1,s對應的2,f對應的3,如果滿足這一對映關係,並一直向後一直保持這種關係則可以說他們有相同的結構。

解題思路:

  1. 先建立一個字典,把對映關係找出來
  2. 再遍歷整個字串,如果不滿足對映關係則判斷為錯

不過其實可以一起結合起來,因為是找錯,只要有一處錯了就可以退出迴圈判斷為錯,所以可以邊建字典邊判斷是否滿足對映關係。但需要兩個字串各遍歷一次都沒有錯才行。

程式碼如下:

class Solution:
    # @param {string} s
    # @param {string} t
    # @return {boolean}
    def idf(self,s, t):
            res = {}
            for i in range(len(s)):
                if s[i] not in res:
                    res[s[i]] = t[i]
                if res[s[i]] != t[i]:
                    return False
            return True
    def isIsomorphic(self, s, t):
        if len(s)!=len(t):
            return False
        return self.idf(s, t) and self.idf(t,s)

相關文章