1. 程式人生 > >leetcode205:同構字串

leetcode205:同構字串

思想:

定義一個空字典reserve,先判斷s[i]是否再字典鍵中,若不在則繼續判斷t[i]是否在字典值中,若不在則賦值,若在則返回False。若在則判斷值是否相等,相等則繼續,反之則返回False。

class Solution:
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        reserve = {}
        for i in range(len(s)):
            if s[i] not in reserve:
                if t[i] not in reserve.values():
                    reserve[s[i]] = t[i]
                else:
                    return False
            else:
                if reserve[s[i]]!=t[i]:
                    return False
        return True

當小菜鳥自己寫出來的時候還是蠻開心的,然後大佬的方法總是打臉。。。。

class Solution(object):
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        return len(set(s)) == len(set(t)) == len(set(zip(s, t)))

大佬的思想:

將set(t)後算長度(去重),set(s)後算長度,zip(s,t)將s和t兩兩對應位置打包成元祖在組合成列表,然後在set()之後算長度。只有三個長度都相等的時候s和t才是同構字串。

知識點:

1.zip()

a = [1,2,3]

b = [4,5,6]

zipped = zip(a,b) #打包為元組的列表

[(1, 4), (2, 5), (3, 6)]