1. 程式人生 > >Isomorphic Strings

Isomorphic Strings

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