我正試圖解決leetcode中的Isomorphic Strings問題。在C++中使用映射的迭代差異
我來到下面的代碼,問題是註釋塊應該像未註釋的迭代一樣運行,但它無法返回正確的答案。但是,當前的代碼可以通過測試。爲什麼區別?謝謝。
「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同意:http://ideone.com/dBVA5V –
嘗試「aa」「ab」。謝謝。 –
如果密鑰不在地圖中,您認爲'map [key]'是什麼? –