同构字符串题目链接:https://leetcode-cn.com/problems/isomorphic-strings给定两个字符串s和t,判断它们是否同构。如果s中的字符可以根据某种映射关系进行替换得到t,则这两个字符串是同构的。字符的每次出现都应映射到另一个字符而不改变字符的顺序。不同的字符不能映射到同一个字符,同一个字符只能映射到同一个字符,一个字符可以映射到它自己。示例1:输入:s="egg",t="add"输出:true示例2:输入:s="foo",t="bar"输出:false示例3:输入:s="paper",t="title"输出:true提示:可以假定s和t具有相同的长度。idea字符串并没有说全是小写字母,所以用数组不合适,用map做映射。用两个map保存s[i]到t[j]和t[j]到s[i]的映射关系。如果发现不匹配,立即返回false。C++代码如下:classSolution{public:boolisIsomorphic(strings,stringt){unordered_mapmap1;unordered_mapmap2;for(inti=0,j=0;imap1=newHashMap<>();Mapmap2=newHashMap<>();for(inti=0,j=0;ibool:default_dict1=defaultdict(str)default_dict2=defaultdict(str)iflen(s)!=len(t):returnfalseforiinrange(len(s)):ifnotdefault_dict1[s[i]]:default_dict1[s[i]]=t[i]ifnotdefault_dict2[t[i]]:default_dict2[t[i]]=s[i]ifdefault_dict1[s[i]]!=t[i]ordefault_dict2[t[i]]!=s[i]:returnFalsereturnTrueGofuncisIsomorphic(sstring,tstring)bool{map1:=make(map[byte]byte)map2:=make(map[byte]byte)fori:=ranges{if_,ok:=map1[s[i]];!ok{map1[s[i]]=t[i]//map1保存了s[i]到t[j的映射]}if_,ok:=map2[t[i]];!ok{map2[t[i]]=s[i]//map2保存了从t[i]到s[j]的映射}//不能映射,返回falseif(map1[s[i]]!=t[i])||(map2[t[i]]!=s[i]){returnfalse}}returntrue}JavaScriptvarisIsomorphic=function(s,t){letlen=s.length;if(len===0)returntrue;letmaps=newMap();letmapt=newMap();for(leti=0,j=0;i