在乙個字串(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 用乙個容器來存放每個字元的出現次數,根據字元來查詢它出現...