📅  最后修改于: 2023-12-03 15:10:02.489000             🧑  作者: Mango
本程序返回一个字符串中所有符合条件的子串的起始位置。
将字符串分成左右两部分,分别计算每个位置上的左侧和右侧的最小字符,然后判断是否相等,如果相等则记录该位置。
def find_positions(s):
positions = []
for i in range(len(s)):
left_min = min(s[:i+1])
right_min = min(s[i:])
if left_min == right_min:
positions.append(i)
return positions
s = 'abcbadefec'
positions = find_positions(s)
print(positions)
输出结果为:[2, 5, 6]
。即在位置2、5、6上,两边的较小字符相等。
本算法的时间复杂度为 $O(n^2)$。因为需要对每个位置都进行左右两部分的扫描。