蓝桥题库每日一练 · 2026.10.26
10月26日 给定一个单词和一段文章,请输出这个单词在文章中一…
给定一个单词和一段文章,请输出这个单词在文章中一共出现的次数,以及单词第一次出现时,它的首字母在文章中的位置(文章中第一个字符的位置为 0,第二个字符的位置为 1……空格也算字符)。注意:匹配单词时不区分大小写,但要求完全匹配,即给定单词必须是文章中一个独立的单词,不能是某个单词的一部分。例如 to 和 tomato 不能匹配。输入:第 1 行为一个只含字母的字符串,表示给定单词(1 ≤ 长度 ≤ 10);第 2 行为一个只包含字母和空格的字符串,表示给定的文章(1 ≤ 长度 ≤ 100000)。输出:如果在文章中找到给定单词,就输出两个整数,分别是单词在文章中出现的次数和第一次出现的位置,两个整数之间用一个空格隔开;如果单词在文章中没有出现,则直接输出一个整数 -1。
样例
输入
To
to be or not to be is a question输出 2 0输入
to
Did the Ottoman Empire lose its power at that time输出 -1评分标准
- 7 分:能正确输出一组测试用例
- 7 分:能正确输出两组测试用例
- 7 分:能正确输出三组测试用例
- 7 分:能正确输出四组测试用例
- 7 分:能正确输出五组测试用例
参考解法
这题有两件事:数一数单词出现了几次,再找它第一次出现在哪个位置。难点藏在那句「注意」里——不分大小写、而且必须是完整的单词。 先对付「不分大小写」。Python 的字符串有个本领叫 lower(),能把里面的大写字母全变成小写:"To".lower() 就是 "to"。把单词和文章都先变成小写,大小写就不再捣乱了。 再对付「必须是完整单词」。文章里的单词是用空格隔开的,咱们就抓住空格做文章: · 数次数:split() 能把文章按空格切开,变成一个「列表」——列表就像一排排好队的小格子,每格装一个单词。再用 count(w) 数一数有几格正好等于 w。tomato 自己占一格,它不等于 to,自然不会被数进去。 · 找位置:find() 会告诉你一段文字第一次出现在哪(从 0 开始数),找不到就给 -1。可要是直接找 "to",连 tomato 里的 to 也会被找到,怎么办?小窍门:先在文章两头各补一个空格,再去找「空格 + 单词 + 空格」。前后都被空格夹住的,只能是一个完整的单词。 还有个巧合你想一想:文章前面补了 1 个空格,所有字符都往后挪了 1 格;而找到的位置是单词前面那个空格的位置,正好比首字母靠前 1 格。一后一前抵消,找到的数就是首字母在原文章里的位置,不用再加减。 w = input().lower() # 单词,统一变小写……
此答案或解析由 AI 生成,请谨慎使用。
难度依赛考组别及等考级别粗略评估,仅供参考。