2.1 思路分析
字串同構的條件:①字串 s 中的字元可以唯一對映到字串 t ;②字串 t 中的字元可以唯一對映到字串 s;
利用map結構中的鍵值對,鍵表示字串 s 中的字元,值表示字串 t 中的字元;
唯一對映的兩種情況:①單個字元可以對映為其本身或其它字元;②多個相同字元對映為相同的字元;
2.2 **實現
class solution
//該方法判斷s1能否唯一對映的s2
public boolean helper(string s1, string s2)
} else
}return true;
}}
2.3 複雜度分析
3.1 思路分析
直接通過雜湊表判斷字串 s 和 字串 t 是否構成對映關係;
3.2 **實現
class solution
hm.put(c1, c2);
} else }}
return true;
}}
3.3 複雜度分析
4.1 思路分析
將字串 s 和 字串 t '翻譯' 成數字,比如abb,egg均可翻譯成122,於是返回true,而abb,eed翻譯成122與112,於是返回false;
那麼如何翻譯成數字呢?定義字串變數儲存翻譯得到的數字,遍歷字串,對於當前字元,如果是第一次出現,那就用新值代替,如果是重複出現,那麼還是用原來的值;
注意:①是否為第一次出現,通過當前字元ascii碼下標對應的陣列值是否為零判斷;②值的更新通過變數count來實現;
4.2 **實現
class solution
//該方法翻譯字串為數字
private string translate(string s)
}return sb.tostring();
}}
4.3 複雜度分析
5.1 思路分析
方法三中呼叫了兩次方法,增加了時間複雜度,可以同時對兩個字串進行翻譯,翻譯的過程中比較它們得到的數字是否相同,如果不同,直接返回false,全部相同則返回true;
5.2 **實現
class solution else }}
return true;
}}
5.3 複雜度分析 字串同構
字串同構 題目描述 給定兩個字串 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 ...