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

2021-10-07 03:51:43 字數 1583 閱讀 3080

題目描述

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

思路分析

這裡分析乙個比較好的思路,供自己參考。

要找到第1個只出現1次的字元,我們可以用乙個有序的linkedhashmap來儲存:因為hashmap是無序的,字串中有可能有多個字元,他們都只出現1次,那麼存進hashmap後會亂序,可能返回的不是第1個出現1次的字元。

注意點:

map.put(c, !map.containskey( c ));這裡設計的很巧妙:

public

char

firstuniqchar

(string s)

for(map.entry

t : map.

entryset()

)return

' ';

}

小結:

題目思路會了,還是要注意一些比較小的點,比如map中的引數型別為(character,boolean)、函式的括號忘寫、map.entryset中儲存的物件型別等等,一不留心就出錯。

補充:

牛客網上返回索引,這裡改**:

public

intfirstnotrepeatingchar

(string str)

char t =

' ';

//查詢第乙個只出現一次的字元,這裡在str中進行迴圈,不是map中

for(

char c : str.

tochararray()

)}//查詢索引

for(

int i =

0; i < str.

length()

; i++

)return-1

;}

補充

牛客網上劍指offer類似題目:

請實現乙個函式用來找出字元流中第乙個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第乙個只出現一次的字元是"g"。當從該字元流中讀出前六個字元「google"時,第乙個只出現一次的字元是"l"。

注意:如果當前字元流沒有存在出現一次的字元,返回#字元。

思路分析:

將字元放在hashmap中:

再次遍歷字串,找到第乙個value=true的結點,返回value。

public

class

solution

public

char()

return

'#';

//這裡返回#

}}

注意:

這裡用的linkedhashmap,是有順序的,而hashmap無序,不能進行代替。

(完)

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

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

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

在字串中找出第乙個只出現一次的字元。使用陣列模擬雜湊表。include using namespace std 功能 查詢字串中第乙個次數不為1的字元 先用雜湊陣列統計一下字串中每個字元出現的次數,然後再遍歷一下,如果次數為1,就直接返回 char firstnotrepeatingchar cha...

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

在乙個字串 1 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置 我們遍歷這個字串,假設每個當前字元都是只出現一次的,我們分別向前和向後考察是否存在相同字元 向前考察 儲存乙個vector裡面存放所有已知的已經重複過的字元,如果當前字元跟這個vector裡面的字元相...