题解 | #MP3光标位置#

MP3光标位置

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

def fun_up(flag):  # 创建函数:光标向上移动
    if flag == 1:  # 当光标位于第一首歌时
        return n  # 跳转至最后一首歌
    else:
        return flag - 1  # 否则光标向上移动一位


def fun_down(flag):  # 创建函数:光标向下移动
    if flag == n:  # 当光标位于最后一首歌时
        return 1  # 跳转至第一首歌
    else:
        return flag + 1  # 否则光标向下移动一位


while True:
    try:
        n = int(input())  # 输入歌曲数量
        string = input()  # 输入命令,U或者D

        nums = [i for i in range(1, n + 1)]  # 创建歌曲列表
        flag, ans = 1, nums[:4]  # 初始化光标位置和第一页歌曲列表
        start, end = 1, 4  # 初始化第一页歌曲列表的页面始末位置

        for item in string:  # 遍历命令行

            if item == "U":  # 判断U命令
                flag = fun_up(flag)  # 光标向上移动
                start -= 1  # 页面起始位置-1

            elif item == "D":  # 判断D命令
                flag = fun_down(flag)  # 光标向下移动
                start += 1  # 页面起始位置+1

            if start == 0:  # 页面位置为0时
                ans = nums[-4:]  # 跳转至最后一页歌曲列表
                start = n  # 页面起始位置变为n
                end = n  # 页面末尾位置变为n

            elif start == n + 1:  # 页面位置为n+1时
                ans = nums[:4]  # 跳转至第一页歌曲列表
                start = 1  # 页面起始位置变为1
                end = 4  # 页面末尾位置变为4

            elif start > end:  # 当页面起始位置大于末尾位置
                ans = nums[flag - 4 : flag]  # 当前页面歌曲列表向下翻页
                end += 1  # 页面末尾位置+1

            elif end - start == 4:  # 当页面末尾位置与起始位置的差值达到4
                ans = nums[flag - 1 : flag + 3]  # 当前页面歌曲列表向上翻页
                end -= 1  # 页面末尾位置-1

        print(" ".join(map(str, ans)))  # 输出当前页面歌曲列表
        print(flag)  # 输出当前选中的歌曲,即光标位置

    except:
        break

#我的实习求职记录#
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务