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

2021-08-15 07:50:08 字數 1412 閱讀 3573

問題描述

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

解決思路

1、建立乙個hash表,用來儲存每乙個字元出現的次數,即乙個字元的大小:256(無符號型別)

2、對hash表中的每乙個的字元進行初始化

3、儲存陣列中每個字元出現的次數,將其儲存在hash表中

4、從陣列的起始開始,遍歷陣列,找到第乙個次數為2次的字元,從而返回這個字元,如果沒有找到,則返回null即可

如下所示:

**如下所示:

方法一

char firstcomesecondchar1(char*array, size_t size)

; memset(str, '0', 256);

//統計每個字元出現的次數

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

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

}//走出來,還沒有找到,則證明沒有這個字元

return

'\0';

}

優點:在儲存每個字元的次數較為方便

缺點:在查詢出現兩次的字元上,迴圈次數太多,從而導致效率較低

方法二

char firstcomesecondchar(char*array, size_t size)

; memset(str, '0', 256);

char*str2 = array;

//統計每個字元出現的次數

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

str2 = array;//再一次更新指標的位置,讓其重新指向開始

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

str2++;

}//走出來,還沒有找到,則證明沒有這個字元

return

'\0';

}

缺點:需要開闢新的字元,從而用來每次指向字串的開始

優點:在查詢出現兩次的字元上比較方便

測試**如下所示:

int main()

結果如下所示:

只有不停的奔跑,才能不停留在原地!!!

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

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

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

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

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

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