Given strings s and t, determine if they are isomorphic.
The strings is isomorphic if the characters in s can is replaced to get t.
All occurrences of a character must is replaced with another character while preserving the order of characters. No, characters may map to the same character and a character may map to itself.
For example,
Given "egg"
, "add"
return True.
Given "foo"
, "bar"
return FALSE.
Given "paper"
, "title"
return True.
The topic is very simple, it is easy to think of the method, is to record the traversal of each letter of S, and record s[i] to t[i] mapping, when the discovery and the existing mapping is not the same, the description cannot be isomorphic, direct return false. However, this can only guarantee the mapping from S to T, can not guarantee the mapping from T to S, so the position of the exchange S and T is again the above traversal is OK.
1 classSolution {2 Public:3 BOOLIsisomorphic (stringSstringt) {4 if(S.length ()! = T.length ())return false;5map<Char,Char>MP;6 for(inti =0; I < s.length (); ++i) {7 if(Mp.find (s[i]) = = Mp.end ()) mp[s[i]] =T[i];8 Else if(Mp[s[i]]! = T[i])return false;9 }Ten mp.clear (); One for(inti =0; I < s.length (); ++i) { A if(Mp.find (t[i]) = = Mp.end ()) mp[t[i]] =S[i]; - Else if(Mp[t[i]]! = S[i])return false; - } the return true; - } -};
[Leetcode] Isomorphic Strings