avatar
fireworks99
keep hungry keep foolish

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)

其他相关函数:

  1. int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引.
  2. int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引.
  3. 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();
    }
}
Site by Baole Zhao | Powered by Hexo | theme PreciousJoy