Microsoft100 17 出現一次的字元

2021-06-21 09:21:48 字數 353 閱讀 6707

題目:在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b.

分析:最簡單的方法就是不斷的迴圈,得出每乙個字元的出現次數,但是這樣時間複雜度為o(n2),後來想了幾種改進演算法,雖然有點進步但時間複雜度任然是o(n2)。

最後還是利用雜湊表的思想,利用空間換時間的策略,得到了乙個很好的方法。

因為是乙個字元,所以我們建立乙個256的陣列,利用字元的ascii碼的值為下標。記錄字元出現的次數。

**如下:

#include #include using namespace std;

void findchar(string &s)

; for (int i=0 ; i

ZOJ 1879 出現且只出現一次

1879 給出1 n之間n個數。如果相鄰兩數差值1 n 1都出現過則為jolly jumper.如果只有乙個數則也為jolly jumper 思路 用map實現。一開始在 中有break,發現不符立即跳出。後來發現沒將值讀完造成後面混亂。abs函式在stdlib中,一開始寫math也wa了。b汗 i...

一次過 整數中1出現的次數

求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數 從1 到 n 中1...

找出陣列中唯二出現一次的數

原題取自 題目要求找出陣列中唯二出現一次的數,其餘數均只出現兩次。要求做到演算法的時間複雜度為o n 解題最直接的方法是計算出陣列中每個數出現的次數,然後取其中出現一次的,但其演算法複雜度不滿足題目要求 這裡採用異或計算的方法來求解 由於 a a 0,a 0 a,假設a b就是題解,則 temp1 ...