题解 | #MP3光标位置#超详细注解
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int size = Integer.parseInt(in.nextLine()); String operator = in.nextLine(); int pointer = 1; // 维护当前在第几行 int curr = 1; // 维护当前在第几首 // 遍历操作 for (int i = 0; i < operator.length(); i++) { if (operator.charAt(i) == 'D') { // 下一首操作 if (++pointer == 5 && curr == size) // 当前行下移,如果超出最后一行,且是最后一首歌 pointer = 1; // 当前行设置为1 else if (pointer == 5) // 如果超出最后一行,不是最后一首歌 pointer = 4; // 当前行数保持在第4行 if (++curr == size + 1) // 歌曲后移一首,如果超出歌曲数量,当前歌曲设置为1 curr = 1; } else { // 上一首操作,是上面的反操作 if (--pointer == 0 && curr == 1) pointer = 4; else if (pointer == 0) pointer = 1; if (--curr == 0) curr = size; } } if (size <= 4) { // 当歌曲不大于4的时候,打印歌曲列表 1 ~ size for (int i = 0; i < size; i++) { System.out.print((i + 1) + " "); } } else { // 当歌曲列表大于4的时候,计算歌曲列表并打印 for (int i = 0; i < 4; i++) { System.out.print((curr - pointer + 1 + i) + " "); } } System.out.println(); System.out.println(curr); } }