題目:
Given two strings s and t, determine if they are isomorphic.
Two strings s and t are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.
給定兩個字串,判斷一字串中的字元是否可透過字元替換而變成另一個字串
要特別注意的是,替換的關係僅能是一對一映射的
ex:(1)input:"egg","add"=>output: true(e換a,g換d)
(2)input:"foo","bar"=>output: false(f換b,o換a,o換r,很明顯o的替換關係不是1對1映射)
我們透過建立hash map,紀錄對應關係,觀察是否有非一對一關係
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
d={}
for i in range(len(s)):
if s[i] not in d:
if t[i] not in d.values():
d[s[i]]=t[i]
else:
return False
else:
if d[s[i]]!=t[i]:
return False
return True
s,t個別表兩字串,然後我們設dictionary為d存放對應關係
從頭開始存放關係(s[i]是key,t[i]是value),會出現以下幾種可能
(1)s[i]不存在key中且t[i]不存在value中:發現新對應關係,紀錄
(2)s[i]不存在key中但t[i]存在value中:發現非一對一關係,return False
(3)s[i]存在key中且對應值和t[i]相同:發現重複的關係而已,無視
(4)s[i]存在key中但對應值和t[i]不同:發現非一對一關係,return False
若紀錄完都沒發現非一對一關係就return True
最後執行時間30ms(faster than 99.74%)
那我們下題見