在字串 s 中找出第乙個只出現一次的字元。如果沒有,返回乙個單空格。 s 只包含小寫字母。示例:
s =
"abaccdeff"
返回 "b"
s =""
返回 " "
解法一:雙層遍歷,set記錄使用遍歷字串的方式進行解題,不過再遍歷的過程中可以用set作記錄提高效率。每當遍歷到乙個新的字元時,就將其儲存到set中;如果set中已經有當前字元,則說明當前字元出現過,直接continue;如果是新字元則向後遍歷看其是否只出現一次。
解法二:使用雜湊表記錄
遍歷字串,使用雜湊表統計各個字元出現的次數是否大於1。再一次遍歷字串找到第乙個出現次數為1的字元。
解法一**:
public
static
char
firstuniqchar
(string s)
set.
add(t)
;//新增新出現的字元
for(
int j=i+
1; j
length()
; j++
)return t;
//t只出現一次,將結果返回
}return
' ';
//沒有則返回空格
}
解法一提交結果:
解法二**:
public
static
char
firstuniqchar2
(string s)
for(
int i=
0; i
length()
; i++
)return
' ';
}
解法二提交結果:
總結:解法一看上去效率更低,但是當字元重複地比較多時,解法一的效率反而更高。由於題目給出的字串只包含小寫字元,即可能出現的字元只有26個。當字串很長時,重複的字元會很多,解法一的效率就會很高;因為解法一最多進行26次雙重迴圈,其餘情況都能直接跳過迴圈。
劍指offer第50 第乙個只出現一次的字元
在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1.coding utf 8 class solution def firstnotrepeatingchar self,s write code here hx 0 256 for ...
Python劍指offer 第乙個只出現一次的字元
在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1 需要區分大小寫 從0開始計數 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m coding utf 8 class solution def fir...
劍指Offer第35題(第乙個只出現過一次的字元)
本部落格旨在個人總結回顧 題目描述 在字串中找到第乙個只出現一次的字元。如輸入 abaccdeff 這輸出 b 解題思路 1 直接遍歷字串,訪問到乙個字元時,再遍歷後邊的字元,看看是否重複。若重複訪問下乙個字元。時間複雜度為o n 2 2 使用雜湊表儲存資訊,遍歷一遍字串時儲存字元 key 及其出現...