您的位置:首页 > 其它

leetcode.(53).205. Isomorphic Strings

2016-11-25 23:46 337 查看
题意:
给定两个字符串,判断它们的抽象结构是不是相同的。

初步分析:

第一反应是hashmap.

键是字符,是没什么问题的,但是值就不一定了,可以是数组,是个值,是个字符都有可能代表着不同的做法。一个int代表出现的次数,行不行呢?不行,因为哪怕出现的次数一样,在前面出现的位置也有可能不一样,所以,要存储的信息,应该和位置有关,角标i行不行呢?将键对应的值设为角标i,即出现的位置。循环的时候就可以判断了

如果是都是各自串里新出现的->这种情况是符合结构相同的  ==>   containsKey()均返回false

如果一个新出现,一个不是新出现 -> 这就是结构不同了

如果都是新出现   -->  就要看对应的值即上次各自出现的位置,是不是一样,不一样就是结构不同。

public class Solution {
public boolean isIsomorphic(String s, String t) {
Map<Character, Integer> map1 = new HashMap<>();
Map<Character, Integer> map2 = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c1 = s.charAt(i);
char c2 = t.charAt(i);
if(map1.containsKey(c1) || map2.containsKey(c2))
{
if(!map1.containsKey(c1) || !map2.containsKey(c2)) //一者出现,一者没出现
return false;
if(!map1.get(c1).equals(map2.get(c2))) //要用equals 用 == 会出错
return false;
}
map1.put(c1, i);
map2.put(c2, i);
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode