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
    • 否則,如果t[i]存在於t_dict中,則:
      • 如果t_dict[t[i]]不等於s[i],則:
        • 返回False
    • 否則:
      • s_dict[s[i]] := t[i]
      • t_dict[t[i]] := s[i]
  • 返回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

更新於:2020年10月5日

瀏覽量:363

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.