功能滚动将元素置于堆栈上的位置 n 并使其成为顶部元素



所以我正在尝试创建一个名为roll的函数,该函数将元素放在堆栈上的位置n,并使其成为顶部元素。例如,将堆栈 s 视为 1 2 3 4,其中左端是堆栈的底部,右端是顶部(因此数字 4 位于堆栈的顶部)。卷(s, 2) 将产生 1 2 4 3,卷子 3 将产生 1 3 4 2。

这是我到目前为止所拥有的

def roll(s: Stack, n: int):
    '''
    >>> roll([1,2,3,4], 2)
    1243
    >>> roll([1,2,3,4], 3)
    1 3 4 2
    '''
    s2 = Stack()
    if s.is_empty():
        return null
    else:
        s2 = s[::-1]

在反转列表和从中挑选元素时,我遇到了最困难的时间。

给出的说明说问题说你不能从顶部访问元素 n 位置。您必须在新堆栈上推送前 n - 1 个元素。删除元素 n 后,将这些元素放回 s 上。

from stack import *
def roll (s, n):
    '''Perform the roll operation on s.'''
    t = Stack()
    for i in range (n - 1):
        t.push(s.pop())
    rollVal = s.pop()
    while t.isEmpty() == False:
        s.push(t.pop())
    s.push(rollVal)

最新更新