第一次只出現一次的字元

2021-09-13 14:11:22 字數 678 閱讀 2112

題目

劍指offer50 第一次只出現一次的字元

在乙個字串(0<=字串長度<=10000,全部由字母組成)中找到第乙個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫)

總結

方法一:基於linkedhashmap的方法

由於題目與字元出現的次數有關,所以可以想到用乙個容器統計每個字元出現的次數。於是想到用hashmap。但是hashmap是不儲存資料的順序的。所以要想返回第一次出現一次的順序,用linkedhashmap。

第一次掃瞄時,在雜湊表中更新所有字元的時間複雜度是o(n)。第二次掃瞄時,在雜湊表中找到所有字元出現的次數的時間複雜度也是o(n)。

class

solution

;// 首先遍歷字串,加入到map中

for(

int i =

0; i < str.

length()

; i++

)else

}int flag =-1

;for

(int i =

0; ilength()

; i++)}

return flag;

}}

第一次只出現一次的字元

include include includechar firstnotrepeatingchar char pstring if pstring null return 0 const int tablesize 256 unsigned int hashtable tablesize for u...

第一次只出現一次的字元

在字串中找出第乙個只出現一次的字元。如輸 abaccdeff 則輸出 b include string include map include iostream using namespace std 法1 用map o nlogn char firstnotrepeatedchar0 char s...

第一次出現一次的字元

題目 在字串中找出第乙個出現一次的字元。如輸入 abaccdeff 則輸出 b 分析 最直觀的解法從頭掃瞄這個字串中的每乙個字元。當訪問到某個字元的時候拿這個字元和後面的字元相比較,如果在後面沒有發現重複的字元,那該字元就是只出現一次的字元。如果字串有n個字元,每乙個字元可能與後面的o n 個字元比...