洛谷P1308统计单词数Java题解
目录
- 题目大意
- 解题思路:
- 具体步骤
- 1.变量的定义以及文本的基本处理
- 2.字符串的遍历查找
- 3.整合最终答案
题目大意
不论字母大小写的词频统计,要求统计给出单词(以下称为模板)在给出的文本(以下称为文本)中一共出现几次,以及该单词第一次出现的首字母位置,没有则返回-1。
解题思路:
首先,处理输入的文本,将字母都变成小写来遍历查找,并记录单词首字母的位置。我最先想到的是指针法,遍历文本,若是出现文本中有字母和模板的首字母相同,则开始后续的对比,若是相同且是首次出现则记录首字母位置,若是不同则模板指针重置为0,文本指针继续向前。
此处要注意可能出现的特殊情况,比如模板是单个字母,以及某个单词(funny—>fun)只有部分符合等情况,下文会进行详细解说。
具体步骤
1.变量的定义以及文本的基本处理
定义字符串model作为模板,lines作为文本。m为模板指针,l为文本指针,由于文本在遍历时指针会被赋值,而模板只有符合条件时才会开始遍历,所以给一个初始值0,temp作为首字母位置的记录,而sum是出现次数的统计。
此处有个小小ps:Java中next是指读取文本,而nextLine则是会读取包括空串的字符,以换行符作为结尾(并且读取),因此,这两个最好不好一起混用,否则会有跳行的现象,也就是说,要么全部next要么全部nextLine。
代码如下(示例):
public class P1308 {static String model,lines;static int m = 0,l,temp = -1,sum = 0;static boolean first = true;public static void main(String[] args) {Scanner sc = new Scanner(System.in);model = sc.nextLine();lines = sc.nextLine();sc.close();model = model.toLowerCase();lines = lines.toLowerCase();
2.字符串的遍历查找
l指针直接开始查找,第一个if条件详解:
l==0:应付第一个单词就是符合模板的情况。
lines.charAt(l-1) == ’ ':确保这是一个新的单词,不会出现上面所说的部分符合条件的情况(adfhs—>fh)。
第二个if条件详解:
应付首字母符合条件但是后面的字母不相符的情况,此处要将m重置。
第三个if条件详解:
m != 0 || model.length() == 1:遍历完成,是符合条件 的单词,并且加上了模板是一个单独单词的情况,此时m=0但是符合条件。
lines.charAt(l+1) == ’ ':应付(abc—>abcde)的情况,确保符合条件的是一个完整的单词。
最后用first布尔变量来判断是否是第一次出现,首字母的位置用减法得到。
代码如下(示例):
for(l = 0;l < lines.length();l++){if((lines.charAt(l) == model.charAt(m))&&((l == 0)||(lines.charAt(l-1) == ' '))){for(int i = 0;i < model.length()-1;i++){l++;m++;if(lines.charAt(l) != model.charAt(m)){m = 0;break;}}if((m != 0 || model.length() == 1) && lines.charAt(l+1) == ' '){sum++;if(first) {temp = l - m;first = false;}}m = 0;}}
3.整合最终答案
if(sum == 0) System.out.println(temp);else {System.out.print(sum+" "+temp);}
以上,感觉要考虑的情况很多。
洛谷P1308统计单词数Java题解相关推荐
- Java 洛谷 P1308 统计单词数
题目链接:https://www.luogu.com.cn/problem/P1308 代码实例: import java.util.Scanner; public class Main{public ...
- c语言--洛谷p1308统计单词数
//这道题思路是借鉴别人的 #include<stdio.h> #include<string.h> int main(){char a[11];char b[1000000] ...
- P1308 统计单词数
P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定 ...
- 洛谷p1506——拯救oibh总部 Java题解 DFS
看了一下java的题解比较少,来发表一下Java AC代码.用的是DFS,染色题型. import java.util.*; public class Main{static Scanner sc=n ...
- java中统计英文单词数_统计单词数 Java
问题描述 统计输入英文文章段落中不同单词(单词有大小写之分, 但统计时忽略大小写)各自出现的次数. 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母. 输入格式 一个包含若干句子的 ...
- 洛谷P3741 honoka的键盘Java题解
这题的思路有俩: 思路1:将字符串转化成字符串数组,如何比对每相邻的值是否与VK相等,然后赋其他值,防止二次判断,这样先将VK找出,随后进行替换,如果出现VV或KK则替换一个即可变成VK,KV则不行 ...
- 洛谷 - P1308 统计单词数(字符串+模拟)
题目链接:点击查看 题目大意:给出一个字符串a和字符串b,现在问字符串b中有多少个单词与字符串a相等,并记录第一次出现的位置 题目分析:看似很简单的一个模拟题,其实包含了不少需要注意的地方: stri ...
- 统计单词数,题解简单易懂量少
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- linux统计单词程序,linux统计单词数
sort +awk+uniq 统计文件中出现次数最多的前10个单词 实例 cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sor ...
- 【OJ】洛谷字符串题单题解锦集
题单简介 题目解析 P5733[深基6.例1]自动修正 P1914 小书童--密码 P1125 笨小猴 P1957 口算练习题 P5015 标题统计 P5734[深基6.例6]文字处理软件 P1308 ...
最新文章
- 如何用 Nginx 在公网上搭建加密数据通道
- [踏得网]HTML5在线教程阅读进度记录
- 常系数齐次线性递推学习笔记
- python-字符串转义符号
- 加速Java应用开发速度3——单元/集成测试+CI
- python中arr是什么意思_python中关于arr[...,1]和arr[:,:,1]的联系与区别
- [bzoj4516] [SDOI2016]生成魔咒
- Ubuntu14.04安装搜狗输入法的一点小问题
- SQL Server 2012基本介绍
- ios系统gps测试软件,GPS工具箱苹果版
- (三)进程各种id:pid、pgid、sid、全局pid、局部pid
- 您的Mac已成功加入Wi-Di网络,但是无法访问互联网问题及解决方案
- 怀孕计算机在线,【孕期天数计算器在线计算_孕期天数计算器在线计算专题】- 天鹅到家...
- 微信小程序之图片压缩
- 数据集下载地址(转)
- 关于微功率短距离无线电发射设备,无需做SRRC认证
- 解决办法之Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC
- DTRO垃圾渗滤液处理设备技术要点详解
- 计算机 五大算法类型,计算机算法设计五大常用算法的分析及实例.docx
- Ubuntu环境R程序安装ncdf4包:错误,找不到nc-config或不可执行
热门文章
- JS获取当前时间的日周月年的开始结束时间
- ios html fixed,关于IOS的Safari浏览器fixed定位失效的那些坑
- 台式计算机如何扫描文件,打印机怎么扫描,教您打印机怎么扫描文件
- A Knee_Guided Evolutionary Algorithm for Compressing Deep Neural Network (KGEA)解读
- 常与同好争高下,不与傻瓜论短长
- 德州大学计算机系郭小虎2021,2021美国德州农工大学PhD项目
- 传感器与检测技术基础知识(4)—— 电阻式传感器
- Spring注解@Value在controller无法获取到值
- c语言狐狸捉兔子问题
- ajax请求在ie浏览器上的兼容性问题