第一次只出現一次的字元

2021-07-12 03:30:05 字數 911 閱讀 2099

//在字串中找出第乙個只出現一次的字元。如輸"abaccdeff",則輸出'b'.

#include "string"

#include "map"

#include "iostream"

using namespace std;

//法1:用map o(nlogn)

char firstnotrepeatedchar0(char* str)

} return '\0';

}#include "unordered_map"

char firstnotrepeatedchar1(char* str)

} return '\0';

}//自己用雜湊表,如果是ascii編碼的話256個字元

char firstnotrepeatedchar2(char* str)

; for (int i = 0; i < len; i++)

hashtable[str[i]]++;

for (int i = 0; i < len; i++) }

return '\0';

}#include "ctime"

void test()

cout << t0 << "ms" << endl;

cout << t1 << "ms" << endl;

cout << t2 << "ms" << endl;

}int main()

執行結果:

201ms

214ms

85ms

自己寫的hashtable最快,自帶的unordered_map最慢。雖然unordered_map內部機理也是hashtable,但較於直接的hasttbale[size],做了很多超出本題需要的無用功。所以會慢。

第一次只出現一次的字元

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

第一次只出現一次的字元

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

第一次出現一次的字元

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