劍指offer 求字串中第乙個只出現一次的字元

2022-04-07 11:40:25 字數 722 閱讀 4604

對於這個問題,常規思路我們進行分析,你首先肯定是喜歡先讓指向乙個字元,然後和它後面的每個字元進行比較,如果後面沒有相同的字元的話,這個字元就是你所要找的第乙個只出現一次的字元。

但是這種思路我們首先要比較n個字元,然後每個字元可能要與後面有n個字元比較,所以,最後我們可以知道這個的時間複雜度為o(n^2),作為乙個精益求精的程式設計師,我想我們肯定要對此進行優化。

對於這個字串,我們面對這裡面所有的字元,我們只需要通過求出每乙個單個字元出現的次數,然後通過這個次數來判定。在這我們可以採用陣列來存放這些次數,當然,因為是字串,所以每乙個字元取值最多也就是256。

其實這種把乙個字元對映成乙個數字的資料容器,就是我們所說的雜湊表

所以我們了解了原理,就可以在紙上寫出我們的程式了。

#include

#include

#include

#define max_size 256

char check_one_arr(const char *str)

; const char *p = str;

while (*p!= '\0' )

p = str;

while (*p !='\0')

return *str;

}int main()

在這裡面,第一次掃瞄的時候,對陣列,雜湊表更新n個字元為o(n),然後第二次掃面的時候,採用o(1)能夠都出乙個字元出現的次數,所以這樣時間複雜度會減小很多。

劍指offer 求字串中第乙個只出現一次的字元

對於這個字串,我們面對這裡面所有的字元,我們只需要通過求出每乙個單個字元出現的次數,然後通過這個次數來判定。在這我們可以採用陣列來存放這些次數,當然,因為是字串,所以每乙個字元取值最多也就是256。其實這種把乙個字元對映成乙個數字的資料容器,就是我們所說的雜湊表 所以我們了解了原理,就可以在紙上寫出...

劍指offer之找出字串中第乙個重複的字元

題目描述 輸入乙個string的字串,輸出第乙個重複的字元。比如輸入 abcdeea 輸出的為e。思路 遍歷string字串,判斷每個字元出現的次數。public class main system.out.println str.charat index 也可以用hashmap的containsk...

劍指offer 字元流中第乙個不重複的字元

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 8 題目描述 請實現乙個函式用來找出字元流中第乙個只出現一次的字元。例如,當從字元流中只讀出前兩個字元 go 時,第乙個只出現一次的字元是 g 當從該字元流中讀出前六個字元 google 時,第乙個只出現一次的字元是 l 輸出描述 ...