題目:
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 輸...