题目:
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.
代码:
/*
*假设s的长度等于t的长度
*/
class Solution {
public:
bool isIsomorphic(string s, string t) {
int len_s = s.size();
int len_t = t.size();
map<char, char> map_char;
for( int i=0; i<len_s;i++ )
{
map<char, char>::iterator it_map;
it_map = map_char.find(s[i]);
if( it_map == map_char.end() )//不存在值为s[i]的key键
{
for( it_map = map_char.begin(); it_map != map_char.end(); it_map++ )
if( it_map -> second == t[i])
break;
if( it_map != map_char.end() )
return false;
else
map_char.insert(pair<char, char>(s[i],t[i]));
}
else
{
if(it_map->second != t[i])
return false;
}
}
return true;
}
};
总结:
1、相关基础知识:STL之map