LeetCode 205
发布日期:2025-04-04 23:03:43 浏览次数:12 分类:精选文章

本文共 1121 字,大约阅读时间需要 3 分钟。

判断两个字符串是否同构的关键在于确保每个字符能够被唯一且正确地映射,并且在映射过程中避免任何冲突。以下是正确的实现方式:

  • 检查基本条件:首先,确保两个字符串的长度相同。如果长度不同,直接返回false。
  • 创建映射和集合:使用一个HashMap来记录字符映射,并使用一个HashSet来记录已被使用的目标字符。
  • 遍历字符并检查映射:遍历每个字符位置,检查映射是否冲突。如果发现冲突,立即返回false。
  • 更新映射关系:如果映射不存在,则将当前源字符映射到目标字符,并记录到集合中以防冲突发生。
  • public boolean isIsomorphic(String s, String t) {    if (s.length() != t.length()) {        return false;    }        Map
    mapping = 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;}

    代码解释

  • 初始检查:检查两个字符串的长度是否相同。如果不同,直接返回false。
  • 映射和集合初始化:使用HashMap记录字符映射关系,HashSet记录已经映射到的目标字符。
  • 遍历字符:对于每个字符位置,获取源字符c1和目标字符c2
  • 检查映射冲突:如果c1已被映射到另一个字符,检查映射是否正确。如果不一致,返回false。
  • 处理新映射:如果c1未被映射,但c2已被使用,返回false。否则,更新映射并记录到集合中。
  • 返回结果:如果所有检查均通过,返回true,表示两个字符串是同构的。
  • 上一篇:LeetCode 206. 反转链表 java版 多种简单方式,总有一款适合你!超级简单易懂的反转链表 java
    下一篇:LeetCode 173. Binary Search Tree Iterator

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年05月05日 15时37分55秒