题目
给你两个字符串t和p
要求从t中找到一个和p相同的连续子串,并输出该子串第一个字符的下标
输入描述
输入文件包括两行 分别表示字符串t和p
保证t的长度不小于p
且t的长度不超过1000000
p的长度不超过10000
输出描述
如果能从t中找到一个和p相等的连续子串
则输出该子串第一个字符在t中的下标
下标从左到右依次为1,2,3,…;
如果不能,则输出 “No”
如果含有多个这样的子串,则输出第一个字符下标最小的
# def Equal_Sub_Str(t, p):
# #计算t长度
# n=len(t)
# #定义一个空列表,将取出的相同字符放入该列表
# eqal_list=''
# j=0
# for i in range(n):
# if t[i]==p[j]:
# eqal_list+=t[i]
# j+=1
# if eqal_list==p:
# equal_bub_str_index=i-len(eqal_list)+2
# return equal_bub_str_index
# else:
# eqal_list=''
# j=0
# if t[i]==p[0]:
# eqal_list+=t[i]
# j=1
# # 如果查到最后也没找到相同字符串,则eqal_list会不等于p,则返回NO
# if eqal_list !=p:
# return 'NO'
def Equal_Sub_Str(t, p):
res=t.find(p)
if res>0:
return res+1
else:
return 'NO'
if __name__=='__main__':
#字符串
#t='AVERDXIVYERDIAN'
#p = 'RDXI'
#ERDXIVYERDXIAN RDXI
#ERDXVYEDXIAN RDXI
t=input('请输入字符串:')
#连续出现次数第K多的字母的次数
p=input('请输入字符串子串:')
first_index=Equal_Sub_Str(t,p)
print(first_index)
考点总结
该题主要考察字符串的查找与使用。可使用函数可以是
- find 从a字符串查找b字符串,返回索引,如果找不到则返回-1
- count 对a字符串中的b计数,找到则返回b的次数。最后通过b字符查看在a的索引。a.index(b)+1
当然,按说也可以用我注释部分的代码。但感觉我是把find的函数实现了一遍。