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 puzzle: Obviously a hash lookup, but there is no need to use a map, a total of 255 characters, each time only record its current position is good (because the previous position has been compared).
classSolution { Public: BOOLIsisomorphic (stringSstringt) {inths[ the]={0}; intht[ the]={0}; intLs=s.length (), lt=t.length (); if(LS!=LT)return false; for(intI=0; i<ls;i++){ if(hs[s[i]]!=Ht[t[i]]) { return false; } Hs[s[i]]=i+1; Ht[t[i]]=i+1; } return true; }};
Leetcode 205. Isomorphic Strings (hash table)