一. 题目描述:
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数
和第一次出现的位置
。注意:匹配单词时,不区分大小写
,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同,如果给定单词仅是文章中某一单词的一部分则不算匹配。
二.题目要求:
输入格式
共2行。
第1行为一个字符串,其中只含字母,表示给定单词;
第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
输出格式
一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数−1。
三.提示:
数据范围
1≤单词长度≤10。
1≤文章长度≤1,000,000。
四.解题思路:
输入文章,每次读取一个字符,读完一个单词,与待查找单词对比,直到文章结束。因为不考虑大小写,所以判断时全都化成了大写。
五.代码:
import math
print("请输入需要查找的单词:")
s1=input()#输入要查询的单词
s1=s1.upper()#将单词转成大写
x=len(s1)#s1字符串的长度
print("请输入被查找的文章:")
s2=input()#输入文章
s3=[]#s3每次提取文章的一个单词
y=len(s2)#s2字符串长度
sum=0#sum记录单词出现在文章中的次数
begin=-1#begin记录单词第一次出现在文章中的位置
for i in range(y):
if(s2[i]!=' '):
s3.append(s2[i].upper())#将一个完整的单词放入s3中
else:
if(list(s1)==s3):#比较单词和s3所储存的单词是否相同
sum+=1#如果相同次数加一
if(begin==-1):#首次出现特定单词
begin=i-x#首次出现的位置
s3.clear()#清空准备下一个单词
if(sum>0):
print(sum, begin)
else:
print(-1)#未查询到输出-1