【Leetcode每日筆記】205. 同構字串(Python)

ZoomToday發表於2020-12-28

題目

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

如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。

所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身。

示例 1:

輸入: s = “egg”, t = “add” 輸出: true

示例 2:

輸入: s = “foo”, t = “bar” 輸出: false

示例 3:

輸入: s = “paper”, t = “title” 輸出: true

說明: 你可以假設 s 和 t 具有相同的長度。

解題思路

雜湊表

s中的每一個字元都與t中字元對應,那麼可以用雜湊表的鍵值對來表示;如abc和qwe,雜湊表是{'a':'q','b':'w','c':'e'},即可判斷是否為同構字串

程式碼

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        if len(s) != len(t):
            return False
        dic = {}
        for st in zip(s,t):
            if st[0] in dic:
                if dic[st[0]] != st[1]:
                    return False
            else:
                dic[st[0]] = st[1]
        # 考慮如‘ab’和‘aa’這種類似的情況
        if len(dic.values()) == len(set(dic.values())):
            return True
        else:
            return False

相關文章