题意:
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同
如果给定单词仅是文章中某一单词的一部分则不算匹配
输入格式:共2行 第1行为一个字符串,其中只含字母,表示给定单词 第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章
输出格式:一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置
(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数−1。
思路:使用Stirng中的方法先转换为小写字母,再用sqlit分隔,最后在用String自带的方法查找到单词第一次出现的位置,同时也要保证单词都是单独出现的,
所以该字符串前后要拼接空格后再去匹配,返回的位置加1就是首次出现的位置
具体每一步的思路都在代码里
import java.util.*; public class Main { static int count, first;//定义一个出现的字符,和第一次出现的位置 public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner in=new Scanner(System.in); String key=in.next().toLowerCase();//获取第一行的输入将字符转化为小写字母 in.nextLine(); String str=in.nextLine().toLowerCase();//获取第二行的输入 String [] strPer=str.split(" ");//用空格分开,每个单词存入strPer数组中 for(int i=0;i<strPer.length;i++) { if(key.equals(strPer[i]))//如果输入的字符串和单词有匹配 count++; } if(count==0)//如果没有匹配的,输出为-1 { System.out.println(-1); } else { if(key.equals(str.substring(0,key.length())))//如果字符串的第一个字母和key相等,输出为0 { first=0; } else first=str.indexOf(" "+key+" ")+1;//前后添加空格是为了保证该单词都是单独出现的,不是其他单词所包含的 ////字符串的indexOf(String)方法会返回String第一次出现的位置 System.out.println(count+" "+first); } } }
原文:https://www.cnblogs.com/coke-/p/12719317.html