传统题 1000ms 256MiB

文海寻词

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

大外“青年译制组”的同学们最近接下了一项大任务:为一部长达三个小时的英文纪录片制作精校版双语字幕。

在校对过程中,为了保证专业术语、人名等译法前后一致,组长常常需要在大段英文原稿中查找某个单词出现了多少次,以及它第一次出现的位置。

手动搜索不仅费时,还很容易漏掉。于是,组长找到了懂编程的你,希望你帮忙写一个简单实用的批量检索工具。

题目描述

给定一段英文原稿和若干个待查询的关键词。对于每个关键词,请统计它在原稿中作为独立单词出现的次数,并输出它第一次出现的位置。

注意:字符串的位置下标从 00 开始编号,空格也算作一个字符。

匹配要求如下:

  1. 匹配时忽略大小写。例如 Keep\texttt{Keep}、keep\texttt{keep} 和 KEEP\texttt{KEEP} 视为同一个单词;
  2. 关键词必须与原稿中的某个完整单词完全一致,不能只匹配较长单词的一部分;
  3. 题目保证输入的原稿中只包含英文字母和空格。

输入格式

第 11 行包含一个字符串 SS,只由英文字母和空格组成,表示待分析的英文原稿(提示:该字符串可能由空格开始或由空格结束,两个单词之间可能包含不止一个空格)。

第 22 行包含一个正整数 TT,表示需要查询的关键词数量。

接下来 TT 行,每行包含一个仅由英文字母组成的字符串 PiP_i,表示一个待查询的目标关键词。

输出格式

输出共 TT 行,每行对应一个关键词的查询结果。

  • 如果该单词没有出现,输出:

    The word "[word]" was not found in the text.
    
  • 如果该单词只出现了 11 次,输出:

    The word "[word]" was found 1 time at index [index].
    
  • 如果该单词在文本中出现过 22 次及以上,输出:

    The word "[word]" was found [count] times, first appearing at index [index].
    

其中,[word]\text{[word]} 表示输入时的原始关键词(保留原大小写,无需进行任何转换,原样输出即可),[count]\text{[count]} 表示出现次数,[index]\text{[index]} 表示第一次出现的位置。

输出时请将上述占位符替换成真实内容,不要输出中括号。


输入输出样例

Keep coding   keep improving   May you shine in every contest and achieve great success
3
keep
to
contest
The word "keep" was found 2 times, first appearing at index 0.
The word "to" was not found in the text.
The word "contest" was found 1 time at index 54.

解释:

  • 查询 keep\texttt{keep}:它在原稿中出现了 22 次,分别是 Keep\texttt{Keep} 和 keep\texttt{keep},首次出现位置为 00。
  • 查询 to\texttt{to}:它没有作为独立单词出现在原稿中,因此输出未找到。
  • 查询 contest\texttt{contest}:它作为独立单词出现了 11 次,第一次出现的位置是 5454(注意空格数量)。

数据范围

对于 100%100\% 的数据,保证:1≤T≤10001 \le T \le 1000、1≤LS≤1061 \le L_S \le 10^6、1≤LPi≤501 \le L_{P_i} \le 50。

大外软院第二届“智汇杯”计算机编程挑战赛

未参加
状态
已完成
规则
乐多
题目
10
开始于
2026-4-8 14:00
结束时间
2026-4-8 15:40
持续时间
1.7 小时
主持人
参赛人数
147