題目
劍指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 個字元比...