在字串 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時,當前所求的目標字元 ...