//在字串中找出第乙個只出現一次的字元。如輸"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 個字元比...