LeetCode 0205. Isomorphic Strings Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0205. Isomorphic Strings

Description

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

Explanation:

The strings s and t can be made identical by:

  • Mapping 'e' to 'a'.
  • Mapping 'g' to 'd'.

Example 2:

Input: s = "f11", t = "b23"

Output: false

Explanation:

The strings s and t can not be made identical as '1' needs to be mapped to both '2' and '3'.

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.

Solutions

Solution 1: Hash Table or Array

We can use two hash tables or arrays d_1 and d_2 to record the character mapping relationship between s and t.

Traverse s and t, if the corresponding character mapping relationships in d_1 and d_2 are different, return false, otherwise update the corresponding character mapping relationships in d_1 and d_2. After the traversal is complete, it means that s and t are isomorphic, and return true.

The time complexity is O(n) and the space complexity is O(C). Where n is the length of the string s; and C is the size of the character set, which is C = 256 in this problem.

PythonJavaC++GoTypeScriptRustC#
class Solution: def isIsomorphic(self, s: str, t: str) -> bool: d1 = {} d2 = {} for a, b in zip(s, t): if (a in d1 and d1[a] != b) or (b in d2 and d2[b] != a): return False d1[a] = b d2[b] = a return True(code-box)

Solution 2

PythonJava
class Solution: def isIsomorphic(self, s: str, t: str) -> bool: d1, d2 = [0] * 256, [0] * 256 for i, (a, b) in enumerate(zip(s, t), 1): a, b = ord(a), ord(b) if d1[a] != d2[b]: return False d1[a] = d2[b] = i return True(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !