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


查看23道真题和解析