劍指Offer系列50 第乙個只出現一次的字元

2021-10-25 05:58:52 字數 1116 閱讀 1261

在字串 s 中找出第乙個只出現一次的字元。如果沒有,返回乙個單空格。 s 只包含小寫字母。

示例:

s = 「abaccdeff」

返回 「b」

s = 「」

返回 " "

限制:

0 <= s 的長度 <= 50000

最直觀的想法是從頭開始掃瞄這個字串中每個字元,當訪問到某字元時,拿這個字元和後面的每個字元相比較,如果在後面沒有發現重複的元素,則該字元就是只出現一次的字元。時間複雜度為o(n

2)

o(n^2)

o(n2)

可以構造乙個雜湊表,key為字元的ascii碼,value為出現的次數。第一次遍歷得到每個字元出現的次數,第二次遍歷找到第乙個只出現一次的字元即可。

這裡可以用乙個陣列表示雜湊表,因為ascii碼一共有256個,所以陣列長度設為256

方法一:無序雜湊表

class

solution

for(

int i =

0; i < len; i++

)return

' ';}}

;

class

solution

};

方法二:有序雜湊表

在雜湊表的基礎上,有序雜湊表中的鍵值對是按照插入順序排序的。基於此,可通過遍歷有序雜湊表,實現搜尋首個「數量為1的字元」。

雜湊表是去重的,即雜湊表中鍵值對數量<=字串 s 的長度。因此,相比於方法一,方法二減少了第二輪遍歷的迴圈次數。當字串很長(重複字元很多)時,方法二則效率更高。

class

solution

for(

char c : keys)

return

' ';}}

;

劍指Offer系列50 第乙個只出現一次的字元

在字串 s 中找出第乙個只出現一次的字元。如果沒有,返回乙個單空格。s 只包含小寫字母。示例 s abaccdeff 返回 b s 返回 限制 0 s 的長度 50000 python 思路 採用雜湊表儲存各字元出現次數 複雜度 o n class solution def firstuniqcha...

Python劍指offer 第乙個只出現一次的字元

在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1 需要區分大小寫 從0開始計數 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m coding utf 8 class solution def fir...

劍指Offer50 第乙個只出現一次字元

class solution for auto c s for auto c s return 自己寫的 劣勢在於使用集合而不是對映,因此無法存對應字元出現的次數,因此當insert乙個重複字元時,它可能是所求的目標字元,也可能是後面的,例如google,insert第二個o時,當前所求的目標字元 ...