34 劍指Offer之第乙個只出現一次的字元

2021-10-08 05:07:15 字數 895 閱讀 3907

在乙個字串(0<=字串長度<=10000,全部由字母組成)中找到第乙個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).(從0開始計數)

本題有點類似於劍指offer的第54題:字元流中第乙個不重複的字元。解題思路也比較類似。

對於本題,這裡給出以下三種解法:(1)用 hashmap 建立每個字元與其出現次數的對映,然後再依次遍歷字串時,找到第乙個出現次數為1的字元,返回其位置即可。(2)更進一步,因為該字串全部是字母,所以可以用乙個陣列代替雜湊表,陣列下標就代表該字母。(3)使用模式匹配從前(indexof)和從後(lastindexof)匹配每乙個字元,相等即為唯一。

indexof 和 lastindexof 都是索引檔案。indexof 是查某個指定的字串在字串首次出現的位置(索引值)(從左往右),lastindexof 是查某個指定的字串在字串最後一次出現的位置(索引值)(從右往左)

public

class

firstnotrepeatingchar_34

for(

int i =

0; i < str.

length()

; i++

)return-1

;}//方法一:陣列代替雜湊表

public

intfirstnotrepeatingchar

(string str)

for(

int i =

0; i < len; i++

)return-1

;}//方法三:模式匹配

public

intfirstnotrepeatingchar

(string str)

return-1

;}}

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

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

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

題目描述 在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1 需要區分大小寫 建立乙個字典後再便利一遍字串,找第乙個 coding utf 8 class solution def firstnotrepeatingchar sel...

劍指Offer 34 第乙個只出現一次的字元

在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸出 b 從頭開始掃瞄這個字串中的每個字元,當訪問到某字元時拿這個字元和後面的每個字元相比較,如果在後面沒有發現重複的字元,則該字元技術只出現一次的字元。時間複雜度是o n 2 用乙個容器來存放每個字元的出現次數,根據字元來查詢它出現...