描述
給定兩個字串s和t,判斷它們是否是同構的。
如果s中的字元可以被替換得到t,那麼這兩個字串是同構的。
所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。
示例 1:
輸入: s = "egg", t = "add"
輸出: true
示例 2:
輸入: s = "foo", t = "bar"
輸出: false
示例 3:
輸入: s = "*****", t = "title"
輸出: true
首先說下我的解法。用hashmap來儲存兩個字串的值,分為key和value。
public boolean isisomorphic2(string s, string t)
}else
map.put(s.charat(i), t.charat(i));//將 s 的字元當做key,將 t 的字元當做value
} }return true;
}
將兩個字元相同索引的值放入map當做key和value。
判斷key相等的時候value相等。key不相等的時候value也不能相等。
在來看下更加優秀的演算法,並不是我寫的。。。
public boolean isisomorphic(string s, string t)
return true;
}
在這裡使用兩個陣列s1和s2,初始化空間是256(因為整個ascii大小是256,128也可以在這裡工作)。 在同一位置遍歷 s 和 t 的字元,如果它們在s1和s2中的對映值不同,則意味著它們沒有正確對映,returen false; 否則我們構造對映,因為m1和m2都被初始化為0,我們想在i == 0時使用新值,所以i + 1在這裡工作。
更加簡單的解釋是,當乙個新的char對比時,他們都是對映到了0.但是傳來乙個之前有過的char時,他們的對映值都必須為之前的 i+1 ,否則就為false。
字串同構
字串同構 題目描述 給定兩個字串 s 和 t 確定它們是否是同構的。兩個字串是同構的如果 s 中的字元可以被替換得到 t。所有出現的字元必須用另乙個字元代替,同時保留字串的順序。沒有兩個字元可以對映到同乙個字元,但乙個字元可以對映到自己。注意事項 你可以假定兩個字串 s 和 t 是一樣長度的.樣例 ...
同構字串
給定兩個字串 s 和 t,判斷它們是否是同構的。如果 s 中的字元可以被替換得到 t 那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。示例 1 輸入 s egg t add 輸出 true 示例 2 輸入 s ...
同構字串
給定兩個字串 s 和 t,判斷它們是否是同構的。如果 s 中的字元可以被替換得到 t 那麼這兩個字串是同構的。所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身 示例 1 輸入 s egg t add 輸出 true 示例 2 輸入 s ...