您的位置:首页 > 其它

Leetcode 205. Isomorphic Strings

2018-02-26 09:53 477 查看
原题:
Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given
"egg"
,
"add"
, return true.
Given
"foo"
,
"bar"
, return false.
Given
"paper"
,
"title"
, return true.
Note:
You may assume both s and t have the same length.
解决方法:
用两个哈希表来保存各种的对应关系,对每一个字母进行检查,如果不匹配,返回false,否则返回true。

代码:
bool isIsomorphic(string s, string t) {
if (s.size() != t.size())
return false;
int n = s.size();
unordered_map<char, char> ms, mt;
for(int i = 0; i < n; i++){
if (!ms.count(s[i]) && !mt.count(t[i]) ){
ms[s[i]] = t[i];
mt[t[i]] = s[i];
}else if (!ms.count(s[i]) || !mt.count(t[i])){
return false;
}else{
if (ms[s[i]] != t[i] || mt[t[i]] != s[i])
return false;
}
}

return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cplusplus Leetcode