給定兩個字串 s 和 t,判斷它們是否是同構的。
如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。
所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。
輸入: s =
"egg"
, t =
"add"
輸出:true
輸入: s =
"foo"
, t =
"bar"
輸出:false
輸入: s =
"*****"
, t =
"title"
輸出:true
說明:
你可以假設 s 和 t 具有相同的長度。
這題可以通過構建乙個map來做,我們可以用map來維護乙個對映。怎麼對映呢?我們從s對映到t。即以s中的字元為key, 對映到以t中的字元為value。對於s中的某個字元cs, 我們對應t中的某個字元ct. 我們遍歷s和t,如果map中沒有這對對映,我們要判定ct是否被其他的cs所對映到,如果對映到,不符合題意(兩個字元不能對映到同乙個字元上)。如果沒對映到,證明這是個新的合法對映,加入到map中。
如果map中有這對對映,我們就看一下ct是不是與對映的value相等,如果不相等,則不符合題意。(方法一)
還有種做法是分別把這兩個都做到第三個對映上。如果對映出來的第三個對映不相等,則不符合題意。常見的一種對映思路是把字母第一次出現時的值記錄下來。
比如abca這個串,我們就可以對映成1231。(方法二)
public
boolean
isisomorphic1
(string s, string t)
}else
map.
put(s.
charat
(i),t.
charat
(i));}
}return
true
;}
public
boolean
isisomorphic
(string s, string t)
private string getcommon
(string s)
else
}return sb.
tostring()
;}
205 同構字串
一開始寫的是用兩個字典,將兩個字串的不同元素作為鍵,值是乙個列表,儲存該字串中等於當前鍵的索引,如abcccdd字串的字典為 然後將兩個字典的values 取出進行比較。class solution def isisomorphic self,s str,t str bool dic1,dic2 s...
205 同構字串
給定兩個字串 s 和 t,判斷它們是否是同構的。如果 s 中的字元可以被替換得到 t 那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。示例 1 輸入 s egg t add 輸出 true 示例 2 輸入 s ...
205 同構字串
給定兩個字串 s 和 t,判斷它們是否是同構的。如果 s 中的字元可以被替換得到 t 那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。示例 1 輸入 s egg t add 輸出 true 示例 2 輸入 s ...