檢查乙個string裡面是否有重複的字元

2021-07-01 22:27:12 字數 624 閱讀 2013

sol1: 

使用two loops迴圈, 比如str[1....n], 對於第乙個字元, 檢查後面的, 如果重複, 返回false, 如果沒有乙個元素和第乙個字元重複, 就繼續檢查str[2], 一次類推下去。

這個辦法的時間複雜度為o(n^2)

sol2: 使用雜湊表, 我們將每乙個character hash 到乙個雜湊表中, 檢查這個字元是否已經存在, 如果位置處為1, 表示已經存在。 

空間複雜度o(256 charcters), 時間複雜度o(n)。

現在問題是對於空間, 能不能改進。

當然可以, 使用bit vector就可以。

例如, 我們假設我們的字串中的字元為a-z, 程式如下:

bool check_duplicate(char string)

return true;

}

分析: 

假如string只是包含a-z的字元。 我們取乙個32bit的integer, 初始化為0. 每乙個bit代表乙個字元。 我們從左向右遍歷這個字串, 如果遇到乙個1, 表明對應的字元已經存在了。 直接返回false, 否則繼續遍歷下去。  當沒有發生1的衝突的時候, 說明沒有duplicates。

檢查乙個列表是否有重複元素

像計算機科學家一樣思考python 第10章練習10 7 編寫乙個名為has duplicates的函式接收乙個列表,當其中任何乙個元素出現多於一次時返回true。它不應當修改原始列表。自己實現的 用while迴圈 def has duplicates t new t sorted t index ...

檢查string是否有重複嘗試用map

題意 輸入一些單詞,找出所有滿足如下條件的單詞 該單詞不能通過字母重排,得到輸入文字的另外乙個單詞。在判斷是否滿足條件時,字母不分大小寫,但在輸出時應保留輸入的大小寫,按字典序排列。題解 先對輸入的單詞進行小寫化,然後進行排序,如果排序後的字串相同,那麼就剔除。此處建議用map型別 注 map中的i...

WebDriver 中如何檢查乙個元素是否存在?

起因 最近自做乙個ui自動化註冊的事情,在使用 webdriver 的過程中遇到了頁面元素可能不存在的問題,因為元素不存在,再執行元素的相關操作的時候就會超時等待和丟擲異常,所以為了處理不存在,就是用了 try catch 的方式處理了一下,如果 try 中的不存在,那就執行 catch 中的 邏輯...