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