您的位置:首页 > 其它

leetcode: Isomorphic Strings

2015-05-16 10:28 316 查看
class Solution {
public:
bool isIsomorphic(string s, string t) {
if(s.empty() && t.empty())
return true;
int sl = s.length();
int tl = t.length();
char * ch = new char[sl];
if(sl != tl)
return false;
map<char,char>m;
map<char,char>::iterator it;
set<char> st;
int i = 0;
while(i < sl){
it = m.find(s[i]);
if(it == m.end()){
m.insert(pair<char,char>(s[i],t[i]));
if(st.find(t[i]) != st.end())
return false;
else
st.insert(t[i]);
}
i++;
}
i = 0;
while(i < sl){
it = m.find(s[i]);
ch[i] = it->second;
i++;
}
string k(ch);
return k == t;
}
};


另一种更快的方法

class Solution {
public:
bool isIsomorphic(string s, string t) {
int sTotTable[256];
int tTosTable[256];
int size = s.length();
for (int i = 0; i < 256; i++){
sTotTable[i] = 300;
tTosTable[i] = 300;
}

for (int i = 0; i < size; i++){
if (sTotTable[s[i]] == 300){
if (tTosTable[t[i]] == 300){
sTotTable[s[i]] = t[i];
tTosTable[t[i]] = s[i];
}
else{
return false;
}
}
else{
if (sTotTable[s[i]] != t[i]){
return false;
}
}
}

return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Isomorphic Strings