205 同構字串

2021-10-03 19:01:49 字數 1258 閱讀 6177

給定兩個字串 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 ...