题解 | #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])