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