缩短Python3中Stack使用的时间

时间:2018-05-02 13:46:22

标签: python-3.x algorithm stack

我正在处理编码问题。

https://www.acmicpc.net/problem/1406

我为此写了一个解决方案,

front = []
back = []

word = input()
count = int(input())

for a in word:
    front.append(a)

for i in range(count):
    command = input().split()
    if command[0] == "P":
        front.append(command[1])
    elif command[0] == "L":
        if front:
            back.append(front.pop())
    elif command[0] == "D":
        if back:
            front.append(back.pop())
    else:
        if front:
            front.pop()

while (back):
    front.append(back.pop())

print(''.join(map(str, front)))

但是,当我提交时,我一直收到TimeOut错误。 如何更改某些东西以便在Python中更快地运行此代码?或者这是语言的固有问题?

1 个答案:

答案 0 :(得分:2)

让我们假设您有一百万个字符和两百万个命令。

  1. 您需要首先迭代一百万个字符并创建一个非常大的数组。
  2. 对于每个L和D操作,您需要弹出并按下。在这个例子中,你这样做了将近两百万次。
  3. 在边缘情况下,当我们只进行L操作时,您必须迭代整个back并将其附加到front
  4. 我打赌所有3个案例都经过测试。

    您可以尝试使用deque https://docs.python.org/2/library/collections.html#collections.deque

    来加快效果

    但我建议不要使用列表。只需操作word并记住索引,即可立即使用光标。