【冗余覆盖】
给定两个字符串s1和s2和正整数K,其中s1长度为n1,s2长度为n2,
在s2中选一个子串,满足:
该子串长度为n1+k
该子串中包含s1中全部字母,
该子串每个字母出现次数不小于s1中对应的字母,
我们称s2以长度k冗余覆盖s1,
给定s1,s2,k,
求最左侧的s2以长度k冗余覆盖s1的子串的首个元素的下标,
如果没有返回-1。
思路:纯逻辑题目
代码一:
def getindex():
s1 = input()
s2 = input()
k = int(input())
if len(s2) <= len(s1) or k < 0:
return -1
for i in range(len(s2)-len(s1)):
tmp = set(s2[i:len(s1)+k+i])
if set(s1)-tmp == set():
for j in tmp:
if s2[i:len(s1)+k+i].count(j) < s1.count(j):
break
return i
else:
continue
return -1
print(getindex())