題目描述:
在字串 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裡面的字元相...