1. 程式人生 > >演算法43----字串【同模式】

演算法43----字串【同模式】

一、題目:同構字串

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

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

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

示例 1:

輸入: s = "egg", t = "add"
輸出: true

示例 2:

輸入: s = "foo", t = "bar"
輸出: false

示例 3:

輸入: s = "paper", t = "title"
輸出: true

說明:


你可以假設 t 具有相同的長度。

 

程式碼:

def isIsomorphic(self, s, t):
    return len(set(zip(s,t))) == len(set(s)) == len(set(t))

 


二、題目:單詞模式:

給定一種 pattern(模式) 和一個字串 str ,判斷 str 是否遵循相同的模式。

這裡的遵循指完全匹配,例如, pattern 裡的每個字母和字串 str 中的每個非空單詞之間存在著雙向連線的對應模式。

示例1:

輸入: pattern = "abba", str = "dog cat cat dog"
輸出: true

示例 2:

輸入:pattern = "abba", str = "dog cat cat fish"
輸出: false

示例 3:

輸入: pattern = "aaaa", str = "dog cat cat dog"
輸出: false

示例 4:

輸入: pattern = "abba", str = "dog dog dog dog"
輸出: false

說明:
你可以假設 pattern 只包含小寫字母, str

 包含了由單個空格分隔的小寫字母。    

程式碼:

    def wordPattern(self, pattern, str):
        """
        :type pattern: str
        :type str: str
        :rtype: bool
        """
        a = str.split(" ")
        if len(pattern) != len(a):
            return False
        return len(set(zip(a,pattern))) == len(set(pattern)) == len(set(a))