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

2021-10-25 07:57:48 字數 1271 閱讀 2197

在字串 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 及其出現...