1. 程式人生 > >205. isomorphic-strings

205. isomorphic-strings

       這道題有點技巧性,是一個一一對映的題目。

       題目的大體意思是:給定兩個字串,假設每個字元僅有唯一的對映關係,判斷這兩個字元是否能對映成一樣的字元。其實這種問題在密碼學中經常遇到,就是我們通過密碼本,可以將密文唯一的翻譯成明文,也可以將明文唯一的加密成密文。那麼,現在給定兩個字串,看這兩個字串是否存在這種對映關係。

       解題思路是這樣的,兩個字串分別取出對應位置的字元,string1[i]和string2[i],假設他們連個存在對映關係,將這兩個字母都對映到同一個數字並記錄下來,比如現在取出的字母是a和b,則a->i, b->i,下一次,當我們取出string1[j]和string2[j]時,我們要判斷這兩個字母記錄的對映值是否相同,如果字母已經對映過並且對映的數字相同,則符合條件,如果出現不相同的情況,則一定不符合條件。

以下是AC後的程式碼:

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        vector<int> nums(256, 0);
        vector<int> numt(256, 0);
        for (int i=0; i<s.size(); ++i) {
            if (nums[s[i]] != numt[t[i]]) {
                return 0;
            }
            nums[s[i]] = i+1;
            numt[t[i]] = i+1;
        }
        return 1;
    }
};