1279: Wallace and His Pet

题目

  给出一句话(英文),单词总数不超过1000,每个单词不超过10个字符,一句话只有一个唯一的字符“.”(句点)。将这句话中出现的最多的单词替换成“guagua”。更多内容点击标题。

分析

  1. 不区分大小写,这很关键。
  2. 统计频率很简单,循环遍历整句话就可以。
  3. 句子末尾有个句点,我用的next()读取的字符串(单词),因此句点会和最后一个单词保存在一起。要去掉这个点。
  4. 输出最后没有空格,有句点。记得换行。

代码

/*** time 730ms* @author PengHao* @version A1.1* @date 2019-04-22 下午5:10:22*/import java.util.Scanner;public class Main {private Scanner sc;private int MAX_WORD = 1001; // 最多1000个单词,下标从1开始private int numOfWords; // 每行的单词个数private String[] words; // 每行的单词private boolean[] visited; // 访问标志,单词统计过就设为trueprivate String mostWords; // 频率最高的单词public Main() {sc = new Scanner(System.in);words = new String[MAX_WORD]; // 单词visited = new boolean[MAX_WORD]; // 访问标志int T = sc.nextInt(); // 数据组数while ((T--) > 0) {input(); // 输入initVisited(); // 初始化访问标志mostWords = findMostWord(); // 获取频率最高的单词output(); // 输出}sc.close();}/*** Input Words.*/private void input() {numOfWords = 0;char end; // 单词的最后一个字符do {words[++numOfWords] = sc.next();end = words[numOfWords].charAt(words[numOfWords].length() - 1);} while ('.' != end); // 不是'.',就继续输入// 去掉最后一个单词的点'.'words[numOfWords] = words[numOfWords].replace(".", "");}/*** Initializes the access flag.*/private void initVisited() {for (int i = 1; i <= numOfWords; i++) {visited[i] = false;}}/*** @return 频率最高的单词*/private String findMostWord() {String mostW = ""; // 频率int mostNum = 0; // 初始最高频率为0String currentWord; // 当前单词int currentNum; // 当前单词个数for (int i = 1; i <= numOfWords; i++) {if (visited[i]) { // 如果这个单词已经统计过,直接跳过continue;}currentWord = words[i].toLowerCase(); // 当前单词变成小写currentNum = 1; // 当前单词出现1次visited[i] = true; // 当前单词设为已经统计过// 检查这个单词在后面是否出现for (int j = i + 1; j <= numOfWords; j++) {// 第j个单词和当前单词一样if (words[j].toLowerCase().contentEquals(currentWord)) {currentNum++; // 个数加1visited[j] = true; // 设为已经统计过}}if (currentNum > mostNum) { // 当前单词的频率比最高的单词频率更高mostW = currentWord; // 更新最高频率单词mostNum = currentNum; // 更新最高频率单词的频率}}return mostW;}/*** Output*/private void output() {// 前numOfWords-1个单词for (int i = 1; i < numOfWords; i++) {// 这个单词是最高频率的单词if (words[i].toLowerCase().contentEquals(mostWords)) {System.out.print("guagua "); // 用guagua替换} else {System.out.print(words[i] + " "); // 原样输出}}// 最后一个单词// 这个单词是频率最高的单词if (words[numOfWords].toLowerCase().contentEquals(mostWords)) {System.out.println("guagua."); // 用guagua替换} else {System.out.println(words[numOfWords] + ".");}}public static void main(String[] args) {new Main();}}

写在最后:

  1. 如需转载,请于标题下注明链接形式的wowpH的博客即可;
  2. 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
  3. 如果有疑问欢迎评论留言,尽力解答。

WUSTOJ 1279: Wallace and His Pet(Java)相关推荐

  1. WUSTOJ 1285: Factors(Java)

    1285: Factors 参考   hadis_fukan的博客--wustoj 1285 Factors 题目   输入一个数n,找出1~n之间(包括1,n)的质因子最多的数(x)的质因子个数(f ...

  2. WUSTOJ 1324: Base64 Coding(Java)未解决,求题解

    题目链接:1324: Base64 Coding 资料:ASCII码表 原文是英文,而且篇幅较长.因此下面不粘贴原文,只写中文大意. Description Base64是一种编码算法.它的工作原理是 ...

  3. java继承 -宠物类叫Pet(父类) ;属性有name 和 age; 行为有吃 eat(); 喝 drink(); 叫声shout();子类 Cat 和 Dog Cat继承 Pet类所

    package cn.bdqn.Homework1; public class Pet {     /*宠物类叫Pet(父类) :         属性有name 和 age:           行 ...

  4. 常惠琢 201771010102《面向对象程序设计(java)》第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法 ...

  5. 建立与ftp服务器的连接——完成版(java)

    建立与ftp服务器的连接--完成版(java) // ftp 程序Ftp.java // 此程序的功能是建立与ftp服务器的连接并实现文件传输 // 使用方法:java Ftp 服务器地址 //启动示 ...

  6. 海康摄像头的二次开发(java)

    海康摄像头的二次开发(java) 我第一次接触海康摄像头的二次开发的项目,一开始的时候摸不清套路,走了不少弯路,现在准备把我的一些经验留下来,让大家参考一下. 1.首先到海康的官网下载设备网络SDK: ...

  7. 《编程导论(Java)#183;1.4.1 范式》

    这个楼主,是我的学生么?2013年写的! 嗯."编程范式或许是学习不论什么一门编程语言时要理解的最重要的术语".这句话早在2005年出版<Java程序设计>(宋中山,严 ...

  8. 201771010106东文财《面向对象程序设计(java)》实验12

    实验十二  图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的AP ...

  9. 2018面向对象程序设计(Java)第3周学习指导及要求

    2018面向对象程序设计(Java) 第3周学习指导及要求(2018.9.11-2018.9.16)   学习目标 适应老师教学方式,能按照自主学习要求完成本周理论知识学习: 掌握Java Appli ...

最新文章

  1. feign 请求超时,请求没有到服务端
  2. Android-HttpURLConnection自己主动管理cookie
  3. php获取ip 1,为什么php获取ip显示::1?
  4. 【附10】kibana创建新的index patterns
  5. 20172307 2017-2018-2 《程序设计与数据结构》第9 周学习总结
  6. 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用
  7. golang Java_goLang
  8. php sqlsrv 分页,sqlsrv php分页
  9. 大巴山计算机教育中心那所学校,大巴山计算机教育中心
  10. mysql 8 配置参数优化_MySQL性能优化之参数配置
  11. 新华三模拟器STP和RSTP及其MSTP的作用与配置
  12. zend studio【快捷键】
  13. VS2013 ADO.NET 连接 SQLEXPRESS
  14. mybatis的缓存,看这一篇就够了!
  15. 下载Latex的IEEE模板
  16. win10计算机切换用户,win10账户切换,详细教您win10怎么切换账户
  17. 驾照考试之科目二(深圳仙田版)
  18. 拼插机器人课和围棋课_乐高机器人玩具与机器人教育有什么区别?
  19. 通信协议:分辨率和偏移量的使用
  20. 搜索算法——深度搜索

热门文章

  1. 安卓4.0模拟器手机版_gta5警察模拟器手机版无限金币下载-gta5警察模拟器手机版最新版下载...
  2. H.265 对直播和点播平台的意义
  3. 相敏检波原理及数字实现
  4. css布局方式,实现四宫格,九宫格,16宫格等切换
  5. Oracle数据库ORA-01589错误
  6. 第三代酷睿i3处理器_10nm+新架构+Iris Plus核显 第十代酷睿到底有多强?
  7. 公司来了个新人,他好像有社交牛逼症......
  8. 关注世界语(Esperanto)
  9. ECMA5与ECMA6
  10. 大一学生Web课程设计 红酒美食主题网页制作(HTML+CSS+JavaScript)