查詢乙個字串中第乙個只出現兩次的字元。

2021-08-03 22:40:41 字數 579 閱讀 2551

題目:

查詢乙個字串中第乙個只出現兩次的字元。比如:「abcdefabcdefabc」中第乙個只出現兩次為『d』,要求時間複雜度為o(n),空間複雜度為o(1)。

由於本體的特殊性,我們可以定義乙個非常簡單的雜湊表。。字元(char)是乙個長度為8的資料型別,因此總共有256中可能。於是我們建立乙個長度為256的陣列,每個字母根據其asc碼值作為陣列的下標對應陣列的乙個數字,而陣列中儲存的是每個字元出現的次數。

第一次掃瞄時,在雜湊表中更新乙個字元出現的次數是o(1)。如果字元長度為n,那麼第一次掃瞄時間複雜度為o(n)。第二次掃瞄時,同樣o(1)能讀出乙個字元出現的次數,所以時間複雜度仍是o(n)。同時,我們需要乙個包含256字元的輔助陣列,由於陣列的大小是個常數。因此空間複雜度為o(1)。

char findfirsttwo(char *str)

; for (int i = 0; i < len; ++i)

for (int i = 0; i < len; ++i) }

return null;

}void testfindfirsttwo()

查詢乙個字串中第乙個只出現兩次的字元

題目 查詢乙個字串中第乙個只出現兩次的字元。比如 abcdefabcdefabc 中第乙個只出現兩次為 d 要求時間複雜度為o n 空間複雜度為o 1 思路 建立乙個輔助陣列 大小為256 陣列的下標表示字元的ascii碼,遍歷字串,每出現乙個,在對應位置加一,最後遍歷陣列就可以找到第乙個出現兩次的...

查詢乙個字串中第乙個只出現兩次的字元

問題描述 查詢乙個字串中第乙個只出現兩次的字元。例如 abcdefabcdefabc 中第乙個只出現兩次的為 d 要求時間複雜度為o 1 空間複雜度為o 1 解決思路 1 建立乙個hash表,用來儲存每乙個字元出現的次數,即乙個字元的大小 256 無符號型別 2 對hash表中的每乙個的字元進行初始...

尋找乙個字串中第乙個只出現兩次的字元

2.附加題 查詢乙個字串中第乙個只出現兩次的字元。比如 abcdefabcdefabc 中第乙個只出現兩次為 d 要求時間複雜度為o n 空間複雜度為o 1 解法 利用雜湊表 由於ascii表中一共存在256個字元 所以開闢乙個256大小整型陣列 將這個陣列看做雜湊表,將字元的ascii值當做key...