题解 | #MP3光标位置#

# 第一种情况,歌曲数目小于5,即只有一页,不涉及翻页操作
# 第二种情况,歌曲数目大于等于5,有多页,涉及到翻页

n = int(input())
ud = input().strip()
mus = list(range(1, n + 1))
mus = [str(i) for i in mus]
gb_index = 1   # 存储光标在当前页面的上位置,因为页面只能显示四首歌,所以取值为 1,2,3,4
fgb_index = 1  # 存储当前页面第一首歌在整个歌曲列表中的位置,初始值为 1
if n < 5:
    for i in ud:
        if i == 'U':
            if gb_index == 1:  # 当光标在第一行,U时,跳到最后一行
                gb_index = n
            else:
                gb_index -= 1
        else:
            if gb_index == n:
                gb_index = 1
            else:
                gb_index += 1
    print(' '.join(mus))
    print(mus[gb_index - 1])
else: # 当歌曲数目大于4时,确定光标当前的歌曲数目简单,难点在于如何确定要显示的当前页面的其他三首歌曲,这就要结合 fgb_index 来确定
    for i in ud:
        if i == 'U':
            if fgb_index == 1 and gb_index == 1: # 只有当光标在当前页面的第一首歌且第一行为整个歌曲列表的第一首歌是,特殊翻页
                fgb_index = n - 3  # n-3,n-2,n-1,n
                gb_index = 4       # 当前页面光标最后一位
            elif gb_index == 1:    # 光标位置在当前页面的第一行,但是当前页面的第一行歌曲不是总歌曲列表的第一行,普通翻页
                fgb_index -= 1
            else:                  # 光标不在当前页面的第一行,不翻页,只是光标的移动
                gb_index -= 1
        else:   # D
            if fgb_index == n -3 and gb_index == 4:
                fgb_index = 1
                gb_index = 1
            elif gb_index == 4:
                fgb_index += 1
            else:
                gb_index += 1
    re = mus[fgb_index - 1:fgb_index + 3]
    print(' '.join(re))
    print(mus[fgb_index + gb_index -2])

# [7, 8, 9, 10]
# 7 8 9 10
全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务