leetcode 205 同構字串

2021-09-29 09:18:53 字數 1795 閱讀 7761

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

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

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

示例 1:

輸入: s =

"egg"

, t =

"add"

輸出:true

示例 2:

輸入: s =

"foo"

, t =

"bar"

輸出:false

示例 3:

輸入: s =

"*****"

, t =

"title"

輸出:true

分析:

同構字串要求滿足兩個字串長度相同;

字串中的字元與另一字串中的字元對應相等,即某一字串中有相同字元,那麼另一字元對應位置字元也相同;

方法一:

使用後map將s字串中的字元與t字串中字元建立key-value對應關係,當出現乙個key值對應多個字串時,則不是同構字串

class

solution

map mp=

newhashmap

();char

cs=s.

tochararray()

;char

ct=t.

tochararray()

;for

(int i=

0;ilength()

;i++

)else}}

return

true;}

}

方法2:

要滿足同構字串,即要滿足兩字串字元一一對應,當字串有重複字元,那麼對應字元對應字串的索引相同,判斷字串中對應位置的索引相同就可以判斷;

很巧妙,有點只可意會不可言傳的意思

class

solution

char

cs = s.

tochararray()

;char

ct= t.

tochararray()

;int len = s.

length()

;for

(int i =

0; i < len; i++)}

return

true;}

}/*思路源自:hao-fei-hao

方法三:

類似於第一種,但是不使用hashmap,僅用陣列實現對應關係,有一定的侷限性,但是思路很好

class

solution

char

cs = s.

tochararray()

;char

ct = t.

tochararray()

;char

map =

newchar

[256];

for(

int i=cs.length-

1;i>=

0;i--)

map[cs[i]

]= map[ct[i]

+128

]= cs[i];}

return

true;}

*/

leetcode 205 同構字串

問題 給定兩個字串 s 和 t,判斷它們是否是同構的。如果 s 中的字元可以被替換得到 t 那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。示例 1 輸入 s egg t add 輸出 true 示例 2 輸入...

LeetCode 205 同構字串

目錄 問題 解法一 給定兩個字串s和t,判斷它們是否是同構的。如果s中的字元可以被替換得到t,那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。示例 1 輸入 s egg t add 輸出 true 示例 2 輸...

LeetCode 205 同構字串

題目描述 這是一道思路巧妙的題目 給定兩個字串 s 和 t,判斷它們是否是同構的。如果 s 中的字元可以被替換得到 t 那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。示例 1 輸入 s egg t add 輸...