
LeetCode 205
检查基本条件:首先,确保两个字符串的长度相同。如果长度不同,直接返回false。 创建映射和集合:使用一个 遍历字符并检查映射:遍历每个字符位置,检查映射是否冲突。如果发现冲突,立即返回false。 更新映射关系:如果映射不存在,则将当前源字符映射到目标字符,并记录到集合中以防冲突发生。 初始检查:检查两个字符串的长度是否相同。如果不同,直接返回false。 映射和集合初始化:使用 遍历字符:对于每个字符位置,获取源字符 检查映射冲突:如果 处理新映射:如果 返回结果:如果所有检查均通过,返回true,表示两个字符串是同构的。
发布日期:2025-04-04 23:03:43
浏览次数:12
分类:精选文章
本文共 1121 字,大约阅读时间需要 3 分钟。
判断两个字符串是否同构的关键在于确保每个字符能够被唯一且正确地映射,并且在映射过程中避免任何冲突。以下是正确的实现方式:
HashMap
来记录字符映射,并使用一个HashSet
来记录已被使用的目标字符。public boolean isIsomorphic(String s, String t) { if (s.length() != t.length()) { return false; } Mapmapping = new HashMap<>(); Set usedT = new HashSet<>(); for (int i = 0; i < s.length(); i++) { char c1 = s.charAt(i); char c2 = t.charAt(i); if (mapping.containsKey(c1)) { if (mapping.get(c1) != c2) { return false; } } else { if (usedT.contains(c2)) { return false; } mapping.put(c1, c2); usedT.add(c2); } } return true;}
代码解释:
HashMap
记录字符映射关系,HashSet
记录已经映射到的目标字符。c1
和目标字符c2
。c1
已被映射到另一个字符,检查映射是否正确。如果不一致,返回false。c1
未被映射,但c2
已被使用,返回false。否则,更新映射并记录到集合中。发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月05日 15时37分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode114.二叉树展开为链表[后序遍历典例]
2023-01-31
LeetCode136.只出现一次的数字[异或运算典例]
2023-01-31
LeetCode13:罗马数字转整数
2023-01-31
Leetcode160 两个链表是否相交
2023-01-31
leetcode190-颠倒二进制位
2023-01-31
leetcode191-打家劫舍
2023-01-31
leetcode23-合并K个升序链表
2023-01-31
leetcode231 判断一个给定的整数是否是2的n次幂
2023-01-31
leetcode238-除自身以外数组的乘积
2023-01-31
LeetCode240:Search a 2D Matrix II
2023-01-31
LeetCode268.缺失数字
2023-01-31
LeetCode331.验证二叉树的前序序列化
2023-01-31
leetcode380. Insert Delete GetRandom O(1)
2023-01-31
LeetCode502
2023-01-31
leetcode507
2023-01-31
LeetCode7.整数反转 JavaScript
2023-01-31
Leetcode: Group Anagrams
2023-01-31
Leetcode: Spiral Matrix II
2023-01-31
LeetCode: String to Integer (atoi)
2023-01-31