给定两个字符串newspaper和message,检查是否能够使用newspaper中的字母来组成message
来源:互联网 发布:unity3d加速器 编辑:程序博客网 时间:2024/05/01 21:37
分析什么情况下newspaper中的字符能组成message?
1。message中用到的字符必须都出现在newspaper中。
2。message中各个字符出现的次数一定少于其在newspaper中的出现次数。
一旦需要统计元素集中元素出现的次数,就应该想到哈希表。键key是字符,值value是该字符在newspaper中出现的次数。
So,若message用到的字符没有出现在哈希表中,则构成失败;若message中用到的字符数多余其在newspaper中出现的次数,则构成失败。
复杂度分析:加上message长度为m,newspaper中长度为n,算法需要hash整个message和newspaper,故时间复杂度为O(m+n)。假设字符集大小为c,则平均空间O(c)。
代码参考:
bool canCompose(string newspaper, string message){ unordered_map<char, int> hashMap; int i; if(newspaper.length()<message.length()){ return false; } for(i=0;i<newspaper.length();i++){ hashMap[newspaper[i]]++; } for(i=0;i<message.length();i--){ if(hashMap.count(message[i])==0){ return false; } if(--hashMap[message[i]]<0){ return false; } } return true;}
注意,count(key)是unordered_map的一个函数, 返回unordered_map中指定键key对应的元素,若存在则返回1,否则返回0。
0 0
- 给定两个字符串newspaper和message,检查是否能够使用newspaper中的字母来组成message
- Newspaper
- 11340 - Newspaper
- javascript检查输入字符串是否只由汉字、字母组成
- 算法程序-两个字符串是否是由颠倒字母组成
- 给定一个字符串,问是否能够通过添加一个字母将其变成“回文串”
- Newspaper and Magazine
- hundred Chinese {newspaper} site
- UVa 11340 - Newspaper
- Uva Oj 11340 - Newspaper
- Barron's (newspaper)
- UVa 11340 Newspaper
- scrapy newspaper bug
- (27)检查给定字符串中的是否包含有效数字
- 判断字符串是否由数字和字母组成
- 面试8之给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成
- 使用C语言,将输入字符串中的大写的字母(A~Z)选出来,组成新的字符串输出。
- 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。
- try catch 和 throwde
- Java中的垃圾回收算法
- 小马哥---高仿苹果6sp 主板型号z18机型 6582刷机拆机主板图与开机界面图
- Linux内核如何装载和启动一个可执行程序
- runtime error (运行时错误)
- 给定两个字符串newspaper和message,检查是否能够使用newspaper中的字母来组成message
- C++ Primer 第五版(中文版) ----容器与继承练习15.28 & 15.29
- Apache POI 读写 Excel file (.xls or .xlsx)
- spark中的共享参量函数
- mysql优化经验
- 文章标题
- php预定义变量$_SERVER
- 随笔
- 渲染技术