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是一种编码算法.它的工作原理是 ...
随机推荐
- meshing-局部加密
原视频下载地址: https://pan.baidu.com/s/1nvSf5qh 密码: cpbs
- 在开发iOS程序时对日期处理的总结
小贴士(Tips)-iOS 由于iOS的设备对应多国语言,用户也可以选择不同的日历模式.比如日本的和历,泰国日历等等. 用户也可以自行设定24小时制或者12小时制来显示时间.这些设置会直接影响应用程序 ...
- jumpserver 堡垒机环境搭建
jumpserver 堡垒机环境搭建(图文详解) https://blog.csdn.net/my_bai/article/details/62226474 http://docs.jumpser ...
- AOP 与 Spring中AOP使用(下)
AOP通知类型 前置通知 在目标方法执行之前进行操作 UserDao.java public class UserDao { public void add(){ System.out.println ...
- 如果项目在IIS发布后,出现System.ComponentModel.Win32Exception: 拒绝访问。
如果项目在IIS发布后,出现System.ComponentModel.Win32Exception: 拒绝访问. 那么就试试下面的办法. 步骤如下: 应用程序池=>设置应用程序池默认设置 将标 ...
- arcgis python 新生成的数据设置
try: # Update the spatial index(es) # r = arcpy.CalculateDefaultGridIndex_management(outFeatures) ar ...
- Linux 基于WEB开源的系统管理工具webmin
Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作.目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的l ...
- linux内核中的__cpu_suspend是在哪里实现的呀?
1. 内核版本 4.19 2. 在arch/arm/kernel/sleep.S中实现如下: /* * Save CPU state for a suspend. This saves the CPU ...
- 置BAT批处理窗口显示颜色
置BAT批处理窗口显示颜色 摘自:https://blog.csdn.net/tp7309/article/details/53450131 2016年12月04日 01:08:33 亦游 阅读数:1 ...
- starUML建模C++【逆向工程】
1.下载starUML 2.打开starUML,选择default approach 3.添加 Profile,把C++添加进去 4.在右侧的工程上点右键—[C++]—-[Reverse Engine ...