摘要:题目同构字符串给定两个字符串和,判断它们是否是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。若找到为的则与比较,不相等则不为同构,相等就继续向下。循环结束后没有中途即为同构字符串返回。
题目: 同构字符串给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例:
输入: s = "egg", t = "add" 输出: true 输入: s = "foo", t = "bar" 输出: false 输入: s = "paper", t = "title" 输出: true思考:
这道题主要是要判断两个字符串相同位置字符的对应关系。 用两个HashMap来保存这种对应关系,map1存放s中字符与t中相同位置字符对应关系,map2存放t中字符与s中相同位置字符对应关系。 循环取得两个字符串中相同位置的字符c1,c2,在map1中寻找key为c1的value,若没找到就将c1、c2作为key、value加入map1。 若map1找到key为c1的value则与c2比较,不相等则不为同构,相等就继续向下。 同样在map2中寻找key为c2的value,若没找到就将c2、c1作为key、value加入map2。 若map2找到key为c2的value则与c1比较,不相等则不为同构,相等就继续向下。 循环结束后没有中途return即为同构字符串返回true。实现:
class Solution { public boolean isIsomorphic(String s, String t) { Mapmap1 = new HashMap<>(); Map map2 = new HashMap<>(); for (int count = 0; count < s.length(); count++) { char c1 = s.charAt(count); char c2 = t.charAt(count); if (map1.containsKey(c1)) { if (map1.get(c1) != c2) return false; } else { map1.put(c1, c2); } if (map2.containsKey(c2)) { if (map2.get(c2) != c1) return false; } else { map2.put(c2, c1); } } return true; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/6950.html
摘要:每日一题亲密字符串链接亲密字符串题目分析题目本身不是很难,但是有不少需要注意的地方,逐一来进行分析。首先如果两个字符串不一样长,那么肯定是。 leetcode每日一...
摘要:每日一题从英文中重建数字链接从英文中重建数字题目分析首先我们先分析每个字母的组成,然后发现一些字符只在一个单词中出现,我们先去统计一下这些单词个数。统计完次数,按升序排列即可。 ...
摘要:每日一题检测大写字母链接检测大写字母题目分析模拟分析题遍历一下字符串统计一下其中的大小写字母然后根据大小写字母的数量判断即可代码统计大写小写字母的数量这里使用是为了避免其他字符的干扰如果字符串都是大写小写字母 ...
摘要:每日一题叉树的最大深度链接叉树的最大深度题目分析简单的搜索题目。只需要从根节点开始一下整个叉树就可以得到答案了。主要是对要理解和掌握叉树的遍历。代码作者作者 lee...
摘要:每日一题平衡二叉树链接平衡二叉树题目分析遍历树,然后每次判断树的左右两个子树的差值即可。 leetcode每日一题-110:平衡二叉树 链接 平衡二叉树 题目 ...
阅读 2803·2021-11-24 09:39
阅读 2776·2021-09-23 11:45
阅读 3402·2019-08-30 12:49
阅读 3351·2019-08-30 11:18
阅读 1907·2019-08-29 16:42
阅读 3343·2019-08-29 16:35
阅读 1320·2019-08-29 11:21
阅读 1911·2019-08-26 13:49