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
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~