考研的時候學習過雜湊函式,但這只是書本上的知識,簡單的理解,從來沒用過,也不知道怎麼用,直到學了第一堂演算法課,原來hash表可以用陣列模擬,統計數字或字元出現的次數。
**如下:
int chash::getstunum(int* data, int len, int score){
if(data == null || len <= 0 || score < 0 || score > max_score){
return error;
//count each score
int *scoremap = new int[max_score];
for(int i = 0; i < max_score; i++){
scoremap[i] = 0;
for(int i = 0; i < len; i ++){
scoremap[data[i]] ++;//關鍵字對映到scoremap中,關鍵字每出現一次,對應的的scoremap[data[i]]加一;
int result = scoremap[score];
delete scoremap;
return result;
//統計字元出現的頻率,本題是求第乙個只出現一次的字元
char chash::getfirstchar(char *str){
if(str == null){
return ' ';
const int char_num = 256;
int *charmap = new int[char_num]; //assic碼0-255;
for(int i = 0; i < char_num; i++){
charmap[i] = 0;
char *p = str;
while( *p != '\0'){
charmap[*p] ++; //字元隱式轉換成整形;
p++;
p = str;
while( *p != '\0'){
if(charmap[*p] == 1){
return *p;
p++;
delete charmap;
return ' ';
查詢字串中第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b。分析 如果字元都是8位,可以用256b的空間表示每個字元的出現次數,遍歷字串一遍完成計數,第二次遍歷該字串,找出第乙個出現次數僅為1的字元並輸出。include include include include void...
找字串中第乙個只出現一次的字元。
方法一 不要求時間複雜度,只要求做出來 兩次迴圈巢狀,遍歷字串。int find one char str,int len if count 2 if count 1 j len return 1 intmain 輸出結果 方法二 要求時間複雜度為o n 根據字元ascii 字元特性,先統計每個字元...
字串中第乙個只出現一次的字元
在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸出b。如果字串中不存在只出現一次的字元,返回 字元。樣例 輸入 abaccdeff 輸出 b 思路 用乙個hashmap key是每個字母 value是出現的次數,第一次用for迴圈將字串每個字元錄到雜湊map裡,如果有重複的就把v...