题目链接点击打开链接
这个题我一开始以为只有26个字母。所以代码写出了这个
public class Solution {
private static boolean flag[]=new boolean[26];
private static char map[]=new char[26];
public boolean isIsomorphic(String s, String t) {
for(int i=0;i<s.length();i++)
{
if(map[s.charAt(i)-'a']=='\u0000')
{
if(flag[t.charAt(i)-'a']==true)
{
return false;
}
else
{
flag[t.charAt(i)-'a']=true;
map[s.charAt(i)-'a']=t.charAt(i);
continue;
}
}
if(map[s.charAt(i)-'a']!=t.charAt(i))
{
return false;
}
}
return true;
}
}
后来报错。里面还有其他的乱七八糟的东西。所以只能用hashmap了于是代码就变成了这个
import java.util.Hashtable;
public class Solution {
private Hashtable<Character, Character> map=new Hashtable<Character, Character>();
public boolean isIsomorphic(String s, String t) {
for(int i=0;i<s.length();i++)
{
Character mapValue=map.get(s.charAt(i));
if(mapValue==null)
{
if(map.contains(t.charAt(i)))
{
return false;
}
else
{
map.put(s.charAt(i), t.charAt(i));
continue;
}
}
if(mapValue!=t.charAt(i))
{
return false;
}
}
return true;
}
}
并且我发现一个问题。不知道是不是leetcode的bug。如果我把map设定为static那么在本机执行aa bb 输入输出的结果是true,正确。可是提交到上面运行的结果输出的就是false。然后没然后了。。