当前位置: 首页 > 面试经验 >

【华为OD机试2023】寻找符合要求最长子串(Python)

优质
小牛编辑
176浏览
2023-03-28

【华为OD机试2023】寻找符合要求最长子串(Python)

题目描述:

给定一个字符串 s ,找出这样一个子串:

1)该子串中的任意一个字符最多出现2次;

2)该子串不包含指定某个字符;

 请你找出满足该条件的最长子串的长度。

 输入描述:

第一行为要求不包含的指定字符,为单个字符,取值范围[0-9a-zA-Z]

第二行为字符串s,每个字符范围[0-9a-zA-Z],长度范围[1,10000]

输出描述:

一个整数,满足条件的最长子串的长度;如果不存在满足条件的子串,则返回0

示例1

输入:

D

ABC123

输出:

6

示例2

输入:

D

ABACA123D

输出:

7

解题思路:

非常标准的考双指针的题,两层for循环遍历所有子串,选择其中符合要求的子串,并计算长度,最终得到最长


def fuhe(st:str,st1:str):
flag=True
if st1 not in st:
for word in set(st):
if st.count(word)>2:
flag=False
else:
flag=False
return flag


st1=input()
st=input()
max_size=0
l=len(st)
for i in range(l):
for j in range(i+1,l+1):
if fuhe(st[i:j],st1):
max_size=max(max_size,j-i)
print(max_size)

#华为机试,emo了#
 类似资料: