同構字串

2021-10-19 22:41:59 字數 1440 閱讀 8340

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