📌  相关文章
📜  打印给定字符串的所有位置,两边的较小字符相等(1)

📅  最后修改于: 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)$。因为需要对每个位置都进行左右两部分的扫描。