题目
给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s = "egg", t = "add"
输出: true
示例 2:
输入: s = "foo", t = "bar"
输出: false
示例 3:
输入: s = "paper", t = "title"
输出: true
说明:
你可以假设 s 和 t 具有相同的长度。
代码模板:
class Solution {
public boolean isIsomorphic(String s, String t) {
}
}
分析
用映射的思想,也就是把每个字符作为key和value保存起来,看是否对应。当然之前在somorphicMap.get(key)为null的时候少了一段,就是是否map已有当前value了,就是针对s = “ab”,t="aa"的时候,做的一些处理。key和value需要双向才行。
解答
class Solution {
public boolean isIsomorphic(String s, String t) {
if(s.length()!= t.length()){
return false;
}
Map<Character,Character> somorphicMap = new HashMap<>();
for(int i = 0;i<s.length();i++){
char key = s.charAt(i);
char value = t.charAt(i);
if(somorphicMap.get(key)!= null){
if(somorphicMap.get(key)!= value){
return false;
}
}else{
if(somorphicMap.containsValue(value)){
return false;
}
somorphicMap.put(s.charAt(i),t.charAt(i));
}
}
return true;
}
}

本文深入解析同构字符串的概念及判别算法,通过具体示例讲解如何使用映射思想来判断两个字符串是否同构。文章提供了详细的代码实现,帮助读者理解同构字符串的判断逻辑。
1415

被折叠的 条评论
为什么被折叠?



