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

2021-08-07 07:25:30 字數 469 閱讀 6684

在乙個字串(1<=字串長度<=10000,全部由字母組成)中找到第乙個只出現一次的字元,並返回它的位置

先簡單說一下暴力破解的思路吧。暴力破解就依次對每乙個字元進行判斷,遍歷字串中的字元,看看是否跟他有相等的字元,沒找到的話,函式就返回當前字元,找到了的話就對下乙個字元進行遍歷判斷,如果到最後乙個字元都沒有找到只出現一次的字元,那就返回-1。

暴力破解的時間複雜度太大了,所以想到了用hash。首先對字串中的字元進行遍歷,記錄出現的字數為當前字元的hash值,然後遍歷hash表,返回第乙個值為一的hash關鍵字。這種方法的時間複雜度最壞情況是o(n)。

class

solution ; // 定義hash

for(auto &i : str)

for(int i = 0; i < str.size(); i++)

return -1;

}};

第一次只出現一次的字元

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...

第一次只出現一次的字元

題目劍指offer50 第一次只出現一次的字元 在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1 需要區分大小寫 總結 方法一 基於linkedhashmap的方法 由於題目與字元出現的次數有關,所以可以想到用乙個容器統計每個字元...