题解 | #MP3光标位置#

MP3光标位置

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

"""
思路:
    所有歌曲是一个列表 a
    屏幕显示的四个歌曲,是一个长度为 4 的列表 b
    按 U:
        1、下标为 0 时,若值为 a[0],更新列表为 a 最后的四个歌曲,下标移到 3
        2、下标为 0 时,若值不为 a[0],b 列表统一前移,下标不变
        3、下标不为 0 时,下标 -1
    按 D:
        1、下标为 b 列表的最后一个元素的下标时,若值为 a[-1],更新列表为 a 的前四个歌曲,下标移到 0
        2、下标为 b 列表的最后一个元素的下标时,若值不为 a[-1],b 列表统一后移,下标不变
        3、下标不为 b 列表的最后一个元素的下标时,下标 +1
"""

sings_num = int(input())
order = input()
all_sings = []
current_sing = []
for sing in range(1, sings_num + 1):
    all_sings.append(str(sing))
    if sing <= 4:
        current_sing.append(str(sing))
index = 0
while len(order) > 0:
    if order[0] == 'U':
        if index == 0:
            # 如果当前选中的歌曲是第一首歌
            if current_sing[index] == all_sings[0]:
                # 如果所有歌曲 <= 4
                if sings_num <= 4:
                    # 显示的列表不变,只移动光标即可
                    index = current_sing.index(current_sing[-1])
                # 如果所有歌曲 > 4
                else:
                    # 下标移到 3,更新列表为所有歌曲的最后四首
                    index = 3
                    current_sing = [all_sings[-4], all_sings[-3], all_sings[-2], all_sings[-1]]
            # 如果当前选中的歌曲不是第一首歌
            else:
                # 列表往前滚动
                current_sing = all_sings[all_sings.index(current_sing[0]) - 1:all_sings.index(current_sing[0]) + 3]
        # 如果当前下标不为 0
        else:
            # 只移动下标,显示的歌曲不变
            index -= 1
    elif order[0] == 'D':
        if index == current_sing.index(current_sing[-1]):
            # 如果当前选中的歌曲是最后一首
            if current_sing[index] == all_sings[-1]:
                # 如果所有歌曲 <= 4
                if sings_num <= 4:
                    # 显示的列表不变,只移动光标即可
                    index = current_sing.index(current_sing[0])
                # 如果所有歌曲 > 4
                else:
                    # 下标移到 0,更新列表为所有歌曲的前四首
                    index = 0
                    current_sing = [all_sings[0], all_sings[1], all_sings[2], all_sings[3]]
            # 如果当前选中的歌曲不是最后一首
            else:
                # 列表往后滚动
                current_sing = all_sings[all_sings.index(current_sing[0]) + 1:all_sings.index(current_sing[0]) + 5]
        # 如果当前下标不为 3
        else:
            # 只移动下标,显示的歌曲不变
            index += 1
    order = order[1:]
output = ' '.join(current_sing)
print(output)
print(current_sing[index])

全部评论

相关推荐

10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务