【华为OD机试】寻找相同子串-python

题目

给你两个字符串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)

考点总结

该题主要考察字符串的查找与使用。可使用函数可以是

  1. find 从a字符串查找b字符串,返回索引,如果找不到则返回-1
  2. count 对a字符串中的b计数,找到则返回b的次数。最后通过b字符查看在a的索引。a.index(b)+1
    当然,按说也可以用我注释部分的代码。但感觉我是把find的函数实现了一遍。

参考链接1
参考链接2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值