Python程式:檢查一個字串能否一對一對映到另一個字串
假設我們有兩個小寫字串s和t,我們需要檢查是否可以為s中的每個字母建立一個一對一的對映到另一個字母(可以是相同的字母),使得s可以對映到t。(字元的順序不會改變)。
所以,如果輸入類似s = "papa",t = "lili",那麼輸出將是True,因為我們可以建立這樣的對映:“p”到“l”,“a”到“i”。
為了解決這個問題,我們將遵循以下步驟:
- s_dict := 一個新的對映
- t_dict := 一個新的對映
- 對於範圍從0到s和t長度較小者的迴圈,執行:
- 如果s[i]存在於s_dict中,則:
- 如果s_dict[s[i]]不等於t[i],則:
- 返回False
- 如果s_dict[s[i]]不等於t[i],則:
- 否則,如果t[i]存在於t_dict中,則:
- 如果t_dict[t[i]]不等於s[i],則:
- 返回False
- 如果t_dict[t[i]]不等於s[i],則:
- 否則:
- s_dict[s[i]] := t[i]
- t_dict[t[i]] := s[i]
- 如果s[i]存在於s_dict中,則:
- 返回True
讓我們看下面的實現來更好地理解:
示例
class Solution:
def solve(self, s, t):
s_dict = {}
t_dict = {}
for i in range(min(len(s), len(t))):
if s[i] in s_dict:
if s_dict[s[i]] != t[i]:
return False
elif t[i] in t_dict:
if t_dict[t[i]] != s[i]:
return False
else:
s_dict[s[i]] = t[i]
t_dict[t[i]] = s[i]
return True
ob = Solution()
print(ob.solve("papa", "lili"))輸入
"papa", "lili"
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP