题目描述:
给定一个字符串 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循环遍历所有子串,选择其中符合要求的子串,并计算长度,最终得到最长
#华为机试,emo了#
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)