LeetCode 205 同構字串 簡單

2021-10-13 05:19:48 字數 2105 閱讀 4794

題目:

205.同構字串:

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

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

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

示例 1

:輸入: s =

"egg"

, t =

"add"

輸出: true

示例 2

:輸入: s =

"foo"

, t =

"bar"

輸出: false

示例 3

:輸入: s =

"*****"

, t =

"title"

輸出: true

說明:你可以假設 s 和 t 具有相同的長度。

解題思路1:

利用字典進行求解。建立字典,將字串 s 和 t 轉換為列表,任選 s 中的某一字母代表 t 中的某一字母,如果字典中存在 t 中兩個或以上字母對應 s 中的兩個或以上的字母,此時字典的值取集合,其長度肯定小於原列表。隨後再遍歷 t ,對 t 進行一定的改寫,最後輸出改寫後的比較的結果。

**1:

class

solution

:def

isisomorphic

(self, s:

str, t:

str)

->

bool

:dict

= s =

list

(s) t =

list

(t)for x in

range

(len

(s))

:if t[x]

notin

dict

:dict

[t[x]

]= s[x]

iflen

(dict

.values())

!=len

(set

(dict

.values())

):return

false

for x in

range

(len

(s))

: t[x]

=dict

[t[x]

]return t == s

解題思路2:同樣也是利用字典,將 s 中的字母轉換成相對應的數字,逐個遍歷,返回數字串 a。

**2:

class

solution

:def

isisomorphic

(self, s:

str, t:

str)

->

bool

:return self.name(s)

== self.name(t)

defname

(self, s)

: a =

''dict

= n =

0for c in s:

if c in

dict

.keys():

a +=

dict

[c]else

:dict

[c]=

str(n)

n +=

1 a +=

dict

[c]return a

執行結果:

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 輸...