1. alphanumerical 的意思是字母数字混合编制的,也就是一句话中被认为是“单词”的组成成分的有数字和字母。这也是为什么例句中can1不被认为是can。

由于这道题对大小写不敏感,不妨在读入后,把大写字母全部改成小写

//大写换小写
for(int i=0;i<len;i++){if(sen[i]>='A'&&sen[i]<='Z')sen[i] += 32;
}

封装一个函数判断单词是否是合法的,即在[a,z]和[0,9]范围内

bool isValid(char c){if(c>='a'&&c<='z')return true;if(c>='0'&&c<='9')return true;return false;
}

2. 知道了单词的组成,本题的关键是如何分词,怎样在句子中取出单词呢?用一个指针变量i,令其小于句子的长度,读到第一个合法字符是开始加入单词,一直到读到第一个非法字符结束,重复这个过程。读到非法字符时不断更新i,直至读到下一个合法字符。

int i = 0;string word;while(i<len){while(i<len&&isValid(sen[i])){word += sen[i];i++;}if(word.length()){if(!mp[word])mp[word] = 1;//原先没有这个单词 else mp[word]++;}word.clear();//清空字符串while(i<len&&!isValid(sen[i]))i++;//跳过无效的字符 }

3. 注意单词要判空。

4. 并不需要一个集合来存放单词,map本身就有迭代器。

AC代码

#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>using namespace std;bool isValid(char c){if(c>='a'&&c<='z')return true;if(c>='0'&&c<='9')return true;return false;
}int main(){map<string,int> mp;string sen;getline(cin,sen);int len = sen.length();//大写换小写 for(int i=0;i<len;i++){if(sen[i]>='A'&&sen[i]<='Z')sen[i] += 32;}int i = 0;string word;while(i<len){while(i<len&&isValid(sen[i])){word += sen[i];i++;}if(word.length()){if(!mp[word])mp[word] = 1;//原先没有这个单词 else mp[word]++;}word.clear();//清空字符串while(i<len&&!isValid(sen[i]))i++;//跳过无效的字符 }map<string,int>::iterator it;int count = 0;string str;for(it=mp.begin();it!=mp.end();it++){if(it->second>count){count = it->second;str = it->first;     }   }cout<<str<<" "<<count<<endl; return 0;
}

1071 Speech Patterns 需再做相关推荐

  1. PAT甲级1071 Speech Patterns :[C++题解]字符串哈希

    文章目录 题目分析 题目链接 题目分析 题目重述:统计含有空格的字符串,切分出出现次数最多的单词. 题目分析: 读入:读入一行,包括空格,使用getline(cin,str); 处理: 先遍历str, ...

  2. 1071. Speech Patterns (25)

    题目如下: People often have a preference among synonyms of the same word. For example, some may prefer & ...

  3. 【题意+分析】1071 Speech Patterns (25 分)_27行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 People often have a preference among synonyms of the same word. F ...

  4. 1081 Rational Sum 有理数类型题处理 需再做

    一.有理数结构体的几个约束 struct fraction{LL up,down;fraction(LL _up,LL _down):up(_up),down(_down){} }; (1)如果这个有 ...

  5. 1098 Insertion or Heap Sort 需再做

    1. 应该还做过一道类似的题目,也是要求判断属于哪种排序的中间过程,并要求写出下一轮排序结果,这次的进步是上来就知道用向量存数据,这样方便直接比较,而且下标0不能存元素,因为堆排序的堆是一个完全二叉树 ...

  6. 1102 Invert a Binary Tree 需再做

    1. 题目的输入是,先给出结点总数N,然后N行给出的是值为x(0<=x<=N-1)的结点的左右结点的值,若不存在左/右结点,则值为 - . 2. 这一题我用动态链表没有做出来,根据参考书提 ...

  7. 1103 Integer Factorization 需再做

    本题是典型的DFS+剪枝 我对DFS有了更深的认识:整个过程就是一片森林(根节点不唯一)的生长,到了界限就得到结果并返回或者得不到结果也返回,DFS的参数存放的是所有需要积累的变量. 提示: 1. 最 ...

  8. 1136 A Delayed Palindrome 需再做

    注意点: 1. 大整数即高精度整数,数据结构bign要会定义 2. 记得写构造函数或者通过别的方式初始化bign 3. len属性记得手动更新 4. int d[maxn]数组是顺位存储,意味着字符串 ...

  9. 1040 Longest Symmetric String 需再做

    解题思路 本题属于最长回文子串专题下.与之前的LIS和LCS的动规有两个较大的不同 1. 虽然最后也是要求长度,但是长度信息不再蕴含在dp数组当中,dp[i][j]表示的仅仅是从s[i]起s[j]止这 ...

最新文章

  1. KVell 单机k/v引擎:用最少的CPU 来调度Nvme的极致性能
  2. python模块os测试文件是否存在及基础原信息获取
  3. 计算机国考一级系统ms,国考一级考试介绍.ppt
  4. TCP服务端收到syn但是不回复syn ack问题分析
  5. SQlite-数据库的访问实例(转)
  6. C语言库自带的二分查找函数bsearch函数的使用示例
  7. 【maven install报错】Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war
  8. Behave用户自定义数据类型
  9. C++起始(关键字,命名空间,缺省参数,函数重载(c语言为什么不支持函数重载))
  10. 天津海运[600751]股票
  11. 排序算法 c++(思想+code)
  12. python提高运行效率_提高CPU密集型任务执行效率——Python多进程介绍,内附实例代码...
  13. 2020 第十一届蓝桥杯大赛软件赛省赛(第一场),C/C++大学B组题解
  14. [机器学习]关联挖掘算法Apriori和FP-Growth以及基于Spark 实例
  15. cgblib 代理接口原理_一文搞懂Java中静态代理、动态代理以及CGLIB代理
  16. 【论文解读】VDN( Variational Denoising Network )变分去噪网络
  17. PROFINET IO设备的GSD文件简介
  18. 临时邮箱 十分钟邮箱 简介
  19. cofax(网络传真机) v3.1.0.0
  20. 渗透安全学习记录笔记

热门文章

  1. Java动态代理机制
  2. hibernate.cfg.xml详细配置
  3. 学习 Linux,101: 引导系统
  4. VC 文件操作(文件查找,打开/保存,读/写,复制/删除/重命名)
  5. Windows server 2003 IP路由配置
  6. Swift学习: 从Objective-C到Swift
  7. 决策树算法原理(ID3,C4.5)
  8. MyBatis的扩展点(plugins)
  9. python全栈开发笔记---------函数
  10. 【安全加密技术】 对称加密