题解 | #MP3光标位置#

MP3光标位置

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

import sys

# 读取所有输入行
lines = sys.stdin.readlines()

# 步长设置为2,每次取两行做处理
for i in range(0, len(lines), 2):
    num = int(lines[i].strip())  # 获取歌曲数量
    opt = lines[i + 1].strip()  # 获取操作
    now = 1  # 初始化光标位置
    page_list = [1, 2, 3, 4] if len(opt) >= 4 else [k + 1 for k in range(num)]  # 初始化当前页
    for j in opt:

        # 光标位置判断--开始
        if j == 'U':
            now -= 1
        else:
            now += 1
        if now <= 0:  # 即判断为-1时,光标设置为结束位置
            now = num
        else:
            if now == num + 1:  # 即判断最后一首歌还点击下一首时,光标设置为开始位置
                now = 1
        # 光标位置判断--结束

        # 当前页面更新--开始
        if len(page_list) >= 4:  # 歌曲数量大于4首时,进行当前页面更新
            if now == 1:  # 光标在第一首歌时,一定是1,2,3,4
                page_list = [1, 2, 3, 4]
            elif now == num:  # 光标在最后一首歌时,一定是最后四个
                page_list = [i + 1 for i in range(num)][num - 4:]
            else:  # 其他情况,如果超过当前页面的开始位置或结束位置,对整体进行平移即可
                if now > page_list[-1]:
                    page_list = [i + 1 for i in page_list]
                if now < page_list[0]:
                    page_list = [i - 1 for i in page_list]
        # 当前页面更新--结束

    print(" ".join([str(i) for i in page_list]))
    print(now)

全部评论
请问楼主,为什么初始页跟操作的长度有关系呀
点赞 回复 分享
发布于 2022-05-07 09:33

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务