跳至主要內容

Leetcode 205. Isomorphic Strings

Given two strings s and tdetermine if they are isomorphic.

Two strings s and t are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.

Example 1:Input: s = “egg”, t = “add” Output: true

Example 2:Input: s = “foo”, t = “bar” Output: false

Example 3:Input: s = “paper”, t = “title” Output: true

Constraints:

  • 1 <= s.length <= 5 * 104
  • t.length == s.length
  • s and t consist of any valid ascii character.

The trick is in the last sentence…

No two characters may map to the same character, but a character may map to itself.

Therefore, it’s needed to double check that no two characters are mapped to the same character.

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        match_dict = {}
        check_dict = {}

        for s_c, t_c in zip(s, t):
            mapping = match_dict.get(s_c)

            if mapping is None:
                if check_dict.get(t_c) is not None and check_dict.get(t_c) != s_c:
                    return False
                match_dict[s_c] = t_c
                check_dict[t_c] = s_c
            elif mapping != t_c:
                return False

        return True
分類:HashmapLeetcode

搶先發佈留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

由 Compete Themes 設計的 Author 佈景主題