Isomorphic Strings
阿新 • • 發佈:2017-08-09
ps1 int 研究 paper 結構 type string map aps
解決這個問題的思路:將兩個字符串的模式抽出來研究。以下舉例說明怎樣抽出一個字符串的模式。
對於paper,用1表示p。用2表示a,用3表示e,用4表示r
那麽paper的模式為12134。
對於title,用1表示t,用2表示i,用3表示l。用4表示e
那麽title的模式為12134。
所以同構。
編程實現中的數據結構:map
class Solution {
public:
bool isIsomorphic(string s, string t) {
map<char, int> mapS1;
int counterS1 = 0 ;
for(string::iterator iter = s.begin(); iter != s.end(); iter++) {
if(!mapS1.count(*iter)) {
counterS1++;
mapS1[*iter] = counterS1;
}
}
vector<int> arrS1;
for(string::iterator iter = s.begin(); iter != s.end(); iter++) {
arrS1.push_back(mapS1[*iter]);
}
map <char, int> mapS2;
int counterS2 = 0;
for(string::iterator iter = t.begin(); iter != t.end(); iter++) {
if(!mapS2.count(*iter)) {
counterS2++;
mapS2[*iter] = counterS2;
}
}
vector<int> arrS2;
for (string::iterator iter = t.begin(); iter != t.end(); iter++) {
arrS2.push_back(mapS2[*iter]);
}
vector<int>::iterator iterS1, iterS2;
iterS1 = arrS1.begin();
iterS2 = arrS2.begin();
for(; iterS1 != arrS1.end(); ) {
if(*iterS1 != *iterS2)
return false;
iterS1++;
iterS2++;
}
return true;
}
};
Isomorphic Strings