题解 | #MP3光标位置#
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 歌曲的数量 String operatorSequence = sc.next(); int[] window = null;// 当前窗口 int pointer = 0;//初始化指针 if (n < 0) return; else if (n == 1) { System.out.println(1); System.out.println(1); return; } else if (n <= 4) { window = new int[n]; for (int i = 0; i < n; i++) window[i] = i + 1; //装填窗口 String[] operators = operatorSequence.split(""); for (String operator : operators) { if (operator.equals("U")) { if (pointer == 0) pointer = window.length - 1; else pointer--; } if (operator.equals("D")) { if (pointer == window.length - 1) pointer = 0; else pointer++; } } } else { window = new int[4]; for (int i = 0; i < 4; i++) window[i] = i + 1; //装填窗口 String[] operators = operatorSequence.split(""); for (String operator : operators) { if (operator.equals("U")) { if (pointer == 0) { if (window[pointer] == 1) { //重新装填窗口 for (int j = 0; j < 4; j++) window[j] = n - (3 - j); pointer = 3; } else for (int j = 0; j < 4; j++) window[j] -= 1; } else pointer--; } if (operator.equals("D")) { if (pointer == 3) { if (window[pointer] == n) { //重新装填窗口 for (int j = 0; j < 4; j++) window[j] = j + 1; pointer = 0; } else for (int j = 0; j < 4; j++) window[j] += 1; } else pointer++; } } } for (int i = 0; i < window.length; i++) { if (i != window.length - 1) System.out.print(window[i] + " "); else System.out.println(window[i]); } System.out.println(window[pointer]); } }