【发布时间】:2015-09-14 04:34:48
【问题描述】:
给定两个字符串 s 和 t,判断它们是否同构。
如果s中的字符可以替换得到t,则两个字符串是同构的。
在保持字符顺序的同时,必须用另一个字符替换所有出现的字符。没有两个字符可以映射到同一个字符,但一个字符可以映射到它自己。
例如, 给定“egg”,“add”,返回true。
给定“foo”、“bar”,返回 false。
给定“论文”、“标题”,返回真。
注意: 您可以假设 s 和 t 的长度相同。
我有这个解决方案,但它花费了太多时间。 任何好的解决方案将不胜感激
public boolean isIsomorphic(String s, String t) {
String resString1="",resString2="";
HashMap<Character,Integer> hashmapS = new HashMap();
HashMap<Character,Integer> hashmapT = new HashMap();
boolean flag = false;
for(int i = 0;i<s.length();i++)
{
char chS = s.charAt(i);
char chT = t.charAt(i);
if(hashmapS.containsKey(chS))
{
resString1 = resString1 + hashmapS.get(chS);
}
else
{
resString1 = resString1 + i;
hashmapS.put(chS, i);
}
if(hashmapT.containsKey(chT))
{
resString2 = resString2 + hashmapT.get(chT);
}
else
{
resString2 = resString2 + i;
hashmapT.put(chT, i);
}
}
if(resString1.equals(resString2))
return true;
else
return false;
}
【问题讨论】:
标签: string data-structures hashmap set