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

2021-08-04 02:03:09 字數 803 閱讀 5624

2.【附加題】–查詢乙個字串中第乙個只出現兩次的字元。

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

解法:

利用雜湊表;由於ascii表中一共存在256個字元;所以開闢乙個256大小整型陣列;將這個陣列看做雜湊表,將字元的ascii值當做key值作為陣列下標,將key對應的陣列元素的值作為value,先遍歷一遍字串,統計出字串中每個字元出現的次數;再從字串的首字元的ascii碼的下標開始遍歷一遍雜湊表,找出第乙個value值為2的key;返回該key對應的字元;就是要求的第一次出現兩次的字元;

#include

using

namespace

std;

//2.字串指標不為空,字串有內容

unsigned

int hashtable[256];

for (int j=0;j<256;j++)

char* hashkey=str;

//統計字串的字元對應的出現的次數;

while (*(hashkey)!='\0')

hashkey=str;

while (*hashkey!='\0')

hashkey++;

}//2.該字串中沒有只出現兩次的字元;

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

題目 查詢乙個字串中第乙個只出現兩次的字元。比如 abcdefabcdefabc 中第乙個只出現兩次為 d 要求時間複雜度為o n 空間複雜度為o 1 由於本體的特殊性,我們可以定義乙個非常簡單的雜湊表。字元 char 是乙個長度為8的資料型別,因此總共有256中可能。於是我們建立乙個長度為256的...

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

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

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

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