SDNUOJ 1118 单词统计 JAVA(s.indexOf())
Description
给定一个字符串和若干个单词,统计这些单词在这个字符串中出现的次数。
题目链接: http://www.acmicpc.sdnu.edu.cn/problem/show/1118
这题用C++做的话要用AC自动机过:https://fireworks99.github.io/2019/07/24/SDNUOJ-1118-%E5%8D%95%E8%AF%8D%E7%BB%9F%E8%AE%A1-AC%E8%87%AA%E5%8A%A8%E6%9C%BA/#more
JAVA暴力可过……
S.indexof(s, pos)
从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引,相当于c++的string里的s.find(str, pos)
其他相关函数:
- int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引.
- int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引.
- int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
Code
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String [] s = new String[10005];
for(int i = 0; i < n; ++i)
s[i] = in.next();
String tem = in.next();
for(int i = 0; i < n; ++i)
{
int cnt = 0;
int pos = tem.indexOf(s[i], 0);
while(pos != -1)
{
cnt++;
pos = tem.indexOf(s[i], pos + 1);
}
System.out.print(cnt);
if(i == n - 1)
System.out.println();
else
System.out.print(' ');
}
in.close();
}
}