演算法 同構字串

2021-09-10 06:22:40 字數 1211 閱讀 8712

描述

給定兩個字串st,判斷它們是否是同構的。

如果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 ...