205. Isomorphic Strings

Easy


Given two strings s and t, determine 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.




 class Solution:


    def isIsomorphic(self, s: str, t: str) -> bool:
        if len(s) != len(t):
            return False

        return self.encode(s) == self.encode(t)

    def encode(self, st):
        d = {}
        return str([d.setdefault(c,len(d)) for c in st])

#         hashmap = {}

#         for i, char in enumerate(s):
#             if char in hashmap:
#                 if hashmap[char] != t[i]:
#                     return False
#             else:
#                 hashmap[char] = t[i]

#         if len(hashmap.keys()) != len(set(t)):
#             return False
#         return True


Random Note


From python 3.7 dict guarantees that order will be kept as they inserted, and popitem will use LIFO order but we need FIFO type system. so we need OrderedDict which have popIten(last = T/F) for this req. One thing, next(iter(dict)) will return the first key of the dict