class Solution {
public:
bool isIsomorphic(string s, string t) {
vector<bool> has_been_confirmed(s.length(), false);
string different_chars = "";
for(size_t index = 0; index < s.length(); ++index){
if(has_been_confirmed[index])
continue;
else{
vector<int> same_letter_indice;
for(size_t i = index; i < s.length(); ++i){
if(s[i] == s[index]){
same_letter_indice.push_back(i);
has_been_confirmed[i] = true;
}
}
//验证对应位置字母是否也是一致的
for(size_t index_in_candidate_list = 0; index_in_candidate_list < same_letter_indice.size(); ++index_in_candidate_list){
if(t[same_letter_indice[index_in_candidate_list]] != t[same_letter_indice[0]])
return false;
}
//t中的字母去重,即s中的不同字母不可以对应t中相同的字母
for(const auto& c: different_chars){
if(t[same_letter_indice[0]] == c)
return false;
}
different_chars += t[same_letter_indice[0]];
// std::cout << s << std::endl;
}
}
return true;
}
};