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

 

 1 class Solution {
 2 public:
 3     bool isIsomorphic(string s, string t) {
 4         map<char,char>mp;
 5         for(int i=0;i<s.size();i++)
 6         {
 7             if(mp.find(s[i])==mp.end()) mp[s[i]]=t[i];
 8             else if(mp[s[i]]!=t[i]) return false;
 9         }
10 
11         mp.clear();
12 
13         for(int i=0;i<s.size();i++)
14         {
15             if(mp.find(t[i])==mp.end()) mp[t[i]]=s[i];
16             else if(mp[t[i]]!=s[i]) return false;
17         }
18 
19         return true;
20     }
21 };

 

posted on 2015-05-23 10:51  黄瓜小肥皂  阅读(140)  评论(0编辑  收藏  举报