MP3光标位置

MP3光标位置_牛客网

https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15?tpId=37&tqId=21287&rp=0&ru=/ta/huawei&qru=/ta/huawei/question-ranking

while True:
    try:
        SongNum=int(input())
        Order=input()
        head,tail,index=1,SongNum,1
        if SongNum<=4:#当歌曲数目小于等于4时,可以直接输出当前列表
            for i in Order:
                if i=='U':#对于每一步的命令‘U’(‘D’),有两种情况:
                    if index==1:#第一种:光标在第一首歌曲上,
                        index=SongNum#执行一次‘U’,光标移到最后一首歌曲上;
                    else:#第二种:光标不在第一首歌曲上,
                        index-=1#执行一次‘U’,光标移到上一首歌曲上;
                else:
                    if index==SongNum:#第一种:光标在最后一首歌曲上,
                        index=1#执行一次‘D’,光标移到第一首歌曲上;
                    else:#第二种:光标不在最后一首歌曲上,
                        index+=1#执行一次‘D’,光标移到下一首歌曲上。
            head,tail=1,SongNum#重新设置头、尾坐标用于歌曲数目大于4的情形
        else:
             for i in Order:
                    if i=='U':
                        if index==1:#此时,执行一次‘U’,
                            index=SongNum#光标移到最后一首歌;
                            head,tail=SongNum-3,SongNum#更新列表尾为最后一首歌,表头为倒数第四首歌
                        else:
                            index-=1#此时,执行一次‘U’,光标上移一首;
                            if index<head:#注意,若上移后的坐标比当前表头坐标小,则要更新表头和表尾,
                                head,tail=index,index+3#更新列表头坐标为光标所在那首歌,列表尾为表头往后3首歌
                    else:
                        if index==SongNum:#此时,执行一次‘D’,
                            index=1#光标移到第一首歌;
                            head,tail=1,4#更新列表头尾第一首歌,表尾为第四首歌
                        else:
                            index+=1#此时,执行一次‘D’,光标下移一首;
                            if index>tail:#注意,若下移后的坐标比当前表尾坐标大,则要更新表头和表尾,
                                head,tail=index-3,index#更新列表尾坐标为光标所在那首歌,列表头为表尾往前3首歌
        print(' '.join([str(i) for i in range(head,tail+1)]))
        print(index)
    except:
        break

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务