205. Isomorphic Strings

Intuition

Two strings are isomorphic if every character in the first string can be uniquely replaced to get the second string, preserving the order. This means:

  • Characters at the same index in both strings must have a one-to-one mapping.

  • No two different characters from the first string can map to the same character in the second string, and vice versa.

Complexity

Space Complexity
Time Complexity

O(1)\text{O}(1)

O(N)\text{O}(N)

Code

public boolean isIsomorphic(String source, String target) {
    // Strings of different lengths cannot be isomorphic
    if (source.length() != target.length()) return false;

    // Arrays to hold character mappings (ASCII size 256)
    char[] mapTargetToSource = new char[256];
    char[] mapSourceToTarget = new char[256];

    for (int i = 0; i < source.length(); ++i) {
        char sourceChar = source.charAt(i);
        char targetChar = target.charAt(i);

        // Check if targetChar is already mapped to a different sourceChar
        if (mapTargetToSource[targetChar] != '\0' && mapTargetToSource[targetChar] != sourceChar) {
            return false;
        }

        // Check if sourceChar is already mapped to a different targetChar
        if (mapSourceToTarget[sourceChar] != '\0' && mapSourceToTarget[sourceChar] != targetChar) {
            return false;
        }

        // Create the character mappings
        mapTargetToSource[targetChar] = sourceChar;
        mapSourceToTarget[sourceChar] = targetChar;
    }

    return true;
}

Last updated