您的位置:首页 > 其它

LeetCode探索之旅(59)-205同构字符串

2019-03-21 19:23 134 查看

今天继续刷LeetCode,第205题,求两个字符串是否是同构的。

分析:
判断两个字符串是否同构,需要找到两个字符串中字符之间的对应关系,这时需要用到hashmap,通过建立两个字符串之间的映射关系,那么就可以判断是否是同构的了。建立两个hashmap,遍历其中一个字符串的每一位,如果不在映射关系中,就添加关系,如果在映射关系中,就看映射的字符是否是另一个字符串中的字符,是的话就满足同构,继续遍历,否则不是同构就直接输出false。

方法二:可以通过数字代替字符,如果第一次出现,就为0,一次累加,然后将整个字符串转换为数字,然后比较两个数字是否相等,判断是否同构。

问题:
1、map的定义:unordered_map<char,char>;
2、map的查找;

附上C++代码:

class Solution {
public:
bool isIsomorphic(string s, string t) {

unordered_map<char,char> tmps;
unordered_map<char,char> tmpt;
for(int i=0;i<s.length();i++)
{
char schar=s[i];
char tchar=t[i];
if(tmps.find(schar)!=tmps.end()&&tmps[schar]!=tchar)
return false;
if(tmpt.find(tchar)!=tmpt.end()&&tmpt[tchar]!=schar)
return false;
tmps[schar]=tchar;
tmpt[tchar]=schar;
}
return true;

}
};

附上python代码:
{}定义字典

class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
ms,mt={},{}
for i in range(len(s)):
if ms.get(s[i])!=mt.get(t[i]):
return False
ms[s[i]]=i
mt[t[i]]=i
return True
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: