题解 | #MP3光标位置#

https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

设置一个当前位置,和一个当前窗口,窗口里面只显示4个位置,当前位置在窗口内。up当前位置,如果超出窗口上边界,向上更新窗口。down当前位置,如果超出窗口下边界,向下更新窗口。
当前位置为5,窗口内容为【5,6,7,8】,操作up, 当前位置是4,窗口内容是【4,5,6,7】,而不是【1,2,3,4】尽管这更贴近真实情况。

def winup():
    global window
    if window[0] == 0:
        window[0] = n-4
        window[1] = n-1
    else:
        window[0] -= 1
        window[1] -= 1
def windown():
    global window
    if n-1 - window[1] > 0:
        window[0] += 1
        window[1] += 1
    else:
        window =[0,3]

while True:
    try:
        n = int(input())
        op = input()
        start = 0 #初始位置
        window = [0,3] #初始窗口,位置从0起符合习惯,到后面+1即为题目要求的位置
        flag = 0 if n <=3 else 1  #页数小于4,就不更新窗口
        for ch in op:
            if ch == 'U':
                start -= 1
                if flag == 1 and start < window[0]:
                    winup()  #向上更新窗口
                if start < 0:
                    start = n-1
            else:
                start += 1
                if flag == 1 and start > window[1]:
                    windown()  #向下更新窗口
                if start > n-1:
                    start = 0
        if flag == 0:
            window[1] = n-1
        res = [i for i in range(window[0],window[1]+1)]
        print(' '.join([str(i+1) for i in res]))
        print(start+1)
    except:
        break

全部评论

相关推荐

04-03 11:37
武汉大学 Java
高斯林的信徒:武大简历挂?我勒个骚岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务