【算法】单词出现次数和位置统计
题目描述
编写一个程序,用于统计一个给定单词在一段文本中出现的次数以及第一次出现的位置。如果单词在文本中出现,则输出出现次数和第一次出现的位置(位置从0开始计算)。如果单词没有出现,则输出-1。
思路分析
- 使用
Scanner
类从控制台读取两个字符串:要搜索的文本str
和要统计的单词substring
。 - 定义一个方法
countStr
,该方法接收两个字符串参数,返回单词在文本中出现的次数。 - 在
countStr
方法中,使用indexOf
方法循环查找单词在文本中的位置。 - 每次找到单词后,增加计数器
count
的值,并将索引index
增加1,以便查找下一个可能的位置。 - 如果
indexOf
返回-1,表示单词不再文本中出现,循环结束。 - 在主方法中调用
countStr
方法,并打印结果。
输入示例
to
to be or not to be is a question
输出示例
2 0
代码实现
import java.util.Scanner;
public class countStr {
public static void main(String[] args) {
// 创建Scanner对象用于读取控制台输入
Scanner sc = new Scanner(System.in);
// 读取要搜索的文本
String str = sc.next();
// 读取要统计的单词
String substring = sc.next();
// 调用countStr方法并打印结果
System.out.println(countStr(str, substring));
}
/**
* 统计单词在文本中出现的次数和第一次出现的位置
* @param str 要搜索的文本
* @param substring 要统计的单词
* @return 包含出现次数和第一次出现位置的字符串(格式:次数 位置),如果未出现则返回-1
*/
public static String countStr(String str, String substring) {
int count = 0;
int index = 0;
while ((index = str.indexOf(substring, index)) != -1) {
count++;
index += substring.length();
}
if (count > 0) {
return count + " " + str.indexOf(substring) + "";
} else {
return "-1";
}
}
}