【发布时间】:2016-01-11 22:15:05
【问题描述】:
我正在尝试解决 leetcode 中的Isomorphic Strings 问题。
我来到下面的代码,问题是注释块应该与未注释的迭代功能相同,但它无法返回正确的答案。但是,当前代码可以通过测试。为什么有区别?谢谢。
"aa""ab" 应该返回 false。
class Solution {
public:
bool isIsomorphic(string s, string t) {
if(s.size() != t.size())
return false;
map<char, int> ms;
map<char, int> mt;
/* for(int i = 0; i < s.size(); i++)
{
if(ms[s[i]] != mt[t[i]])
return false;
else
ms[s[i]] = mt[t[i]] = i;
}
*/
int n = s.size();
int i = n;
for (; i >= 0 ; --i) {
if (ms[s[n-i]] != mt[t[n-i]])/*|| s[i] == t[i]*/
return false;
else
ms[s[n-i]] = mt[t[n-i]] = i;
}
return true;
}
};
【问题讨论】:
-
在我看来完全一样。 Ideone 同意:ideone.com/dBVA5V
-
试试 "aa" "ab" 。谢谢。
-
如果钥匙不在地图上,你认为
map[key]是什么?
标签: c++ string dictionary iteration