凡科网站怎么做友情链接,桂林北站到象鼻山景区怎么坐车,短网址批量在线生成,php如何制作网页题目 给定两个字符串 s 和 t #xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t #xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字符上#xff0c…题目 给定两个字符串 s 和 t 判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符同时不改变字符的顺序。不同字符不能映射到同一个字符上相同字符只能映射到同一个字符上字符可以映射到自己本身。 示例 1: 输入s egg, t add
输出true示例 2 输入s foo, t bar
输出false 示例 3 输入s paper, t title
输出true 提示 1 s.length 5 * 104t.length s.lengths 和 t 由任意有效的 ASCII 字符组成 题目解析
同构字符串意思就是字符串1中的每个字符都唯一映射字符串b中的一个字符
比如 a----d,c-----e,这个对应关系是双向的即1中字符a---d,那么2中字符d也一定是对应的a
不能有这种场景如a---d;c-----d;
思路
可以使用一个map来存储对应关系键为字符串1的当前字符值为字符串2的当前字符
如果遇到map中已经有了该key,那么就需要取出来value,判断value是否与字符串2的当前值一样一样说明是对应的不一样说明不对应直接返回false
例如 abb ,cdf , 但是这种情况忽略了一种情况
badc,babe,因为b已经对应了b,那么d就不能再对应b 代码
class Solution {public boolean isIsomorphic(String s, String t) {int a s.length();int bt.length();//长度不等直接返回falseif(a!b){return false;}//定义两个map存储对应关系HashMapCharacter,Character map new HashMap();HashMapCharacter,Character map1 new HashMap();for(int i0;ia;i){char c s.charAt(i);char d t.charAt(i);//如果map已经存在了key c,那么要取出值然后判断对应值是否与d相等if(map.containsKey(c)){char e map.get(c);
//不相等说明映射错误if(d!e){return false;}//判断map1中已经存在了d,取出值f与c对比看是否相等}else if(map1.containsKey(d)){char f map1.get(d);
//不相等说明有误if(f!c){return false;}}else{
//map中都不包括该key存入mapmap.put(c,d);map1.put(d,c);}}return true;}
}