知识储备:02数组与字符串:判断元素出现与否及次数

来源:互联网 发布:手机淘宝撤销投诉 编辑:程序博客网 时间:2024/06/04 01:25

bitset

判断元素出现与否

bitset<256> 256位,每个位可取01


unordered_map

哈希表,用来计算元素出现次数


复杂度分析:

时间:bitset与哈希表的新建(插入)操作都是O(1),字符串长度为n,则平均时间复杂度是O(n)

空间:字符集大小m,则平均空间复杂度是O(m)


#include <iostream>#include <bitset>#include <unordered_map>using namespace std;//使用bitset判断元素是否出现bool isUnique(string input){//创建存储位的位集,大小根据需要定bitset<256> hashMap;for (int i = 0; i < input.length(); i++){if (hashMap[input[i]]){return false;}hashMap[input[i]] = 1;}return true;}//使用哈希表判断元素出现次数void countHash(string input){//创建哈希表typedef unordered_map<char, int> umap;umap hashMap;//字符作为key,出现字符为valuefor (int i = 0; i < input.length(); i++){hashMap[input[i]]++;}//迭代器依次显示元素次数for (umap::iterator iter = hashMap.begin(); iter != hashMap.end(); iter++){cout << iter->first << "出现" << iter->second << "次" << endl;}}int main(){string input;//输入字符串cout << "请输入字符串:" << endl;cin >> input;//判断元素是否唯一bool res = isUnique(input);cout << "判断结果(1唯一,0不唯一):" << res << endl;//不唯一则计算元素出现次数if (!res)countHash(input);return 0;}


阅读全文
0 0
原创粉丝点击