题解 | #MP3光标位置#

MP3光标位置

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

n = int(input())
action = input()

mappings = {'U': -1, 'D': 1}

all_sings = [i for i in range(1, n + 1)]
window = all_sings[0:4]
f = 0  # 整体指针 范围【0 - (n-1)】
p = 0  # 视口指针 范围【0 - 3】

for a in action:
    _f = f + mappings[a]
    _p = p + mappings[a]

    if _f < 0:  #  整体指针移动后小于0说明跳转到最后一页
        window = all_sings[-4:]
        f = n - 1
        p = 3
        continue

    if _f > n - 1:  #  整体指针移动后大于n-1说明跳转到第一页
        window = all_sings[0:4]
        f = 0
        p = 0
        continue
    # 未产生特殊跳转
    f = _f 
    if _p < 0:  # 视口指针小于0说明向上翻页超过了当前视口
        p = 0  # 翻页后视口指针仍在最前端
        window = all_sings[f: f + 4]  # 确定f位置,向后找4个
    elif _p > 3: # 视口指针大于3说明向下翻页超过了当前视口
        p = 3 # 翻页后视口指针仍在最后端
        window = all_sings[f - 3: f + 1]  # 确定f+1位置,向前找4个
    else:
        p = _p  # 未产生翻页情况

print(' '.join(list(map(str, window))))
print(all_sings[f])

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:18
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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