演算法43----字串【同模式】
阿新 • • 發佈:2018-11-09
一、題目:同構字串
給定兩個字串 s 和 t,判斷它們是否是同構的。
如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。
所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身。
示例 1:
輸入: s ="egg",
t ="add"
輸出: true
示例 2:
輸入: s ="foo",
t ="bar"
輸出: false
示例 3:
輸入: s ="paper",
t ="title"
輸出: true
說明:
你可以假設 s 和 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))