知识储备:02数组与字符串:判断元素出现与否及次数
2017-08-14 21:07
281 查看
bitset
判断元素出现与否
bitset<256> 256位,每个位可取0或1
unordered_map
哈希表,用来计算元素出现次数
复杂度分析:
时间:bitset与哈希表的新建(插入)操作都是O(1),字符串长度为n,则平均时间复杂度是O(n)
空间:字符集大小m,则平均空间复杂度是O(m)
判断元素出现与否
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; }
相关文章推荐
- JS判断数组或者一个字符串中出现次数最多的元素及其出现的次数
- php判断一维数组中相同元素出现的次数
- Java给定一个字符串数组,判断每个字符出现次数
- 主元素问题(判断数组是否出现主元素,O(n)时间内找出主元素,主元素出现次数)
- java中判断数组中元素出现的次数
- 给定["a","b","a","b","c","a","b","c","b"]字符串数组,然后使用Map的key来保存数组的字符串元素,value保存该字符串元素出现的次数。
- 常用技巧之JS判断数组中某元素出现次数
- 判断一个数组中出现次数最多的元素
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- js获取array数组中出现次数最多的元素(字符串)
- JavaScript知识之判断字符串中出现最多的字符及次数
- js 判断数组中指定元素出现的次数
- JAVA中查询一个词在内容中出现的次数、判断集合中是否包含关键字、查询字符串数组单个字符的长度
- 知识储备:02数组与字符串:利用哈希表实现动态规划
- 知识储备:02数组与字符串:String相关问题
- 判断一个数组或者一个字符串中出现次数最多的项及其次数
- 给定字符串数组,用map的key保存数组中字符串元素,value保存字符串元素出现次数,最后统计个字符串元素出现次数
- 编程题--给定一个字符串数组,判断每个字符出现次数
- js统计一个字符串出现最多的字母(或者数组中出现次数最多的元素)
- 判断数组中出现次数最多的元素