WUSTOJ 1279: Wallace and His Pet(Java)
1279: Wallace and His Pet
题目
给出一句话(英文),单词总数不超过1000,每个单词不超过10个字符,一句话只有一个唯一的字符“.”(句点)。将这句话中出现的最多的单词替换成“guagua”。更多内容点击标题。
分析
- 不区分大小写,这很关键。
- 统计频率很简单,循环遍历整句话就可以。
- 句子末尾有个句点,我用的next()读取的字符串(单词),因此句点会和最后一个单词保存在一起。要去掉这个点。
- 输出最后没有空格,有句点。记得换行。
代码
/**
* 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; // 访问标志,单词统计过就设为true
private 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; // 初始最高频率为0
String 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++; // 个数加1
visited[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();
}
}
写在最后:
- 如需转载,请于标题下注明链接形式的wowpH的博客即可;
- 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
- 如果有疑问欢迎评论留言,尽力解答。
WUSTOJ 1279: Wallace and His Pet(Java)的更多相关文章
- WUSTOJ 1235: 计算矩阵的鞍点(Java)
1235: 计算矩阵的鞍点 题目 输出二维数组中行上为最大,列上为最小的元素(称为鞍点)及其位置(行列下标).如果不存在任何鞍点,请输出"404 not found"(不带引号 ...
- WUSTOJ 1276: 峰峰不搞G(Java)
1276: 峰峰不搞G 题目 给 n 数量的油漆,写出最大的数,每个数对应有油漆的花费.更多内容点击标题. 分析 我读完题,就想到用动态规划,结果是Time Limit Exceed.然后看了 ...
- WUSTOJ 1247: 递增或递减排序(Java)
1247: 递增或递减排序 题目 有n个整数,求它的递增排序序列或递减排序序列.更多内容点击标题. 分析 统一升序排序,输出的时候做区分. 先区分是升序还是降序,调用库函数. 代码 方法1,将 ...
- WUSTOJ 1338: The minimum square sum(Java)
题目链接:1338: The minimum square sum Description Given a prime p(p<108), you are to find min{x2+y2}, ...
- WUSTOJ 1311: 开心的金明(Java)动态规划-01背包
题目链接:
- WUSTOJ 1307: 校门外的树(Java)
题目链接:
- WUSTOJ 1302: 区间k大数查询(Java)
题目链接:
- WUSTOJ 1346: DARK SOULS(Java)并查集
题目链接:1346: DARK SOULS 并查集系列:WUSTOJ 1319: 球(Java)并查集 Description CQ最近在玩一款游戏:DARK SOULS,这是一款以高难度闻名的硬派动 ...
- WUSTOJ 1324: Base64 Coding(Java)未解决,求题解
题目链接:1324: Base64 Coding 资料:ASCII码表 原文是英文,而且篇幅较长.因此下面不粘贴原文,只写中文大意. Description Base64是一种编码算法.它的工作原理是 ...
随机推荐
- Git 工作流
一.分类 1.集中式工作流 像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体.所有修改都提交到 Master 这个分支上. 这种方式与 SVN 的主要区别就是开发人员有本地库.Git ...
- Apache Flink - 数据流容错机制
Apache Flink提供了一种容错机制,可以持续恢复数据流应用程序的状态.该机制确保即使出现故障,程序的状态最终也会反映来自数据流的每条记录(只有一次). 从容错和消息处理的语义上(at leas ...
- Elasticsearch6.4.0-windows环境部署安装
Elasticsearch可以轻松的实现全文检索,本文主要介绍Elasticsearch(ES)环境的安装部署,该文及后续使用的ES版本为6.4.0.希望能够帮助到大家. 一.安装Elasticsea ...
- javascript的正则表达式总结
网上正则表达式的教程够多了,但由于javascript的历史比较悠久,也比较古老,因此有许多特性是不支持的.我们先从最简单地说起,文章所演示的正则基本都是perl方式. 元字符 ( [ { \ ^ $ ...
- selenium元素input的value值设置【node.js版本】
driver.executeScript(‘document.getElementById(“id”).value=“value”’); 这个操作就类似于//$("#id").va ...
- HTML5 地理位置定位API(4)
地理定位(geolocation)是最令人兴奋,而且得到了广泛支持的一个新API.通过这套API, JavaScript代码能够访问到用户的 当前位置信息.当然,访问之前必须得到用户的明确许可,即同意 ...
- KDChart example
/******************************************************************************** ** Form generated ...
- SpringCloud学习成长之路三 服务消费者(Feign)
一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解. 它具有可插拔的注解特性,可使用Feign 注解和JAX-RS ...
- 基于JAVA JWT 实现OATUH TOKEN验证
什么是jwt? 最详细的是官网:https://jwt.io/ 这里以java的ssm框架为例,集成jwt. 1.pom.xml 导入jwt的包 <!-- jwt --> <!-- ...
- 通过命令行给 XenServer 打补丁
安装 XenCenter 客户端,cmd 到 XenCenter 安装目录. 1.上传补丁到服务器,获得uuid xe patch-upload -s <服务器IP地址> -u root ...