import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param t string字符串
     * @return bool布尔型
     */
    public boolean isIsomorphic (String s, String t) {
        // 长度不相等不可能映射成功
        if (s.length() != t.length()) {
            return false;
        }
        HashMap<Character, Character> sHashMap = new HashMap<>();
        HashMap<Character, Character> tHashMap = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char sChar = s.charAt(i);
            char tChar = t.charAt(i);
            if (sHashMap.containsKey(sChar)) {
                if (sHashMap.get(sChar) != tChar) {
                    return false;
                }
            } else {
                if (tHashMap.containsKey(tChar)) {
                    return false;
                }
                sHashMap.put(sChar, tChar);
                tHashMap.put(tChar, sChar);
            }
        }
        return true;
    }
}

本题知识点分析:

1.哈希表的存取

2.数学模拟

3.字符串

本题解题思路分析:

1.创建两个哈希表分别存放两个字符串的字符

2.分别取出两个字符串的字符,如果此时sHashMap包含了s的字符,但是从sHashMap的get取出不是当前是tChar,说明被其他字符映射,返回false;

3.如果没有包含s字符,但是此时tHashMap有存在tChar,说明被其他字符映射,返回false, 如果没有,分别在两个哈希表放入两个字符。

本题使用编程语言: Java

如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~