gpt4 book ai didi

string - 同构字符串

转载 作者:行者123 更新时间:2023-12-04 17:52:45 26 4
gpt4 key购买 nike

给定两个字符串 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;
}

最佳答案

/* 时间复杂度 = O(n)*/

public static boolean isIsomorphic (String s1 , String s2){

if (s1 == null || s2 == null){
throw new IllegalArgumentException();
}

if (s1.length() != s2.length()){
return false;
}

HashMap<Character, Character> map = new HashMap<>();

for (int i = 0 ; i < s1.length(); i++){

if (!map.containsKey(s1.charAt(i))){

if(map.containsValue(s2.charAt(i))){

return false;
}

else{
map.put(s1.charAt(i), s2.charAt(i));
}
}
else{
if( map.get(s1.charAt(i)) != s2.charAt(i)){
return false;
}
}
}

return true;
}

关于string - 同构字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com