卖萌的弱渣

I am stupid, I am hungry.

Isomorphic Strings

Given two strings s and t, determine if they are isomorphic.

Two strings 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,

Given “egg”, “add”, return true.

Given “foo”, “bar”, return false.

Given “paper”, “title”, return true.

Note

You may assume both s and t have the same length.

Solution

  • Two hasmaps to record the map for s[i] and t[i]
  • Judge if sourceMap[s[i]] == t[i] and targetmap[t[i]] == s[i]
(Isomorphic-Strings.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution(object):
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        sourceMap = dict()
        targetMap = dict()

        for i in range(len(s)):
            source = sourceMap.get(s[i])
            target = targetMap.get(t[i])
            if source == None and target == None:
                sourceMap[s[i]] = t[i]
                targetMap[t[i]] = s[i]
            elif source != t[i] or target != s[i]:
                return False
        return True