当前位置:网站首页>长度为n的入栈顺序的可能出栈顺序

长度为n的入栈顺序的可能出栈顺序

2022-07-05 04:00:00 诗与浪子

import itertools


def is_pop_order(push, pop):
    """ 根据入栈顺序判断出栈顺序是否合理 :param push: 入栈顺序 :param pop: 出栈顺序 :return: """
    if len(push) == 0:
        return False

    stack = []
    j = 0
    for i in range(len(push)):
        stack.append(push[i])
        while j < len(pop) and stack and stack[-1] == pop[j]:
            stack.pop()
            j += 1

    if len(stack) == 0:
        return True
    else:
        return False


if __name__ == '__main__':
    push = '123'
    sequences = list(itertools.permutations(push, 3))
    for sequence in sequences:
        pop = ''.join(sequence)
        if is_pop_order(push, pop):
            print(pop)

    # 1 2 3
    # 1 3 2
    # 2 1 3
    # 2 3 1
    # 3 1 2 x
    # 3 2 1
原网站

版权声明
本文为[诗与浪子]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44647926/article/details/125587384