您的位置:首页 > 其它

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

2017-08-14 21:07 281 查看
bitset
判断元素出现与否
bitset<256> 256位,每个位可取0或1

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,出现字符为value
for (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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐