题解 | #MP3光标位置#
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) {
int num = in.nextInt();
String input = in.next();
int cur = 1; //光标的当前位置
// if(input.length() <= 4 ){
// for(int i=0 ; i<input.length() ; ++i){
// char op = input.charAt(i);
// if(op == 'U'){
// --start;
// }
// }
// }
if (num <= 4) { //如果少于四首歌曲,则界面不变
for (int i = 0 ; i < num ; ++i) {
System.out.print((i + 1) + " ");
}
System.out.println();
int x = 0;
for (int i = 0 ; i < input.length() ; ++i) {
char op = input.charAt(i);
if (op == 'U') {
--x;
}
if (op == 'D') {
++x;
}
}
cur = cur + x;
if (cur % num == 0) {
System.out.println(num);
} else {
System.out.println(cur % num);
}
continue;
}
int[] number = new int[4];//当前界面
for (int i = 0 ; i < 4 ; ++i) { //当前光标的界面
number[i] = i + 1;
}
for (int i = 0 ; i < input.length() ; ++i) {
char op = input.charAt(i);
int pre = cur; //移动前光标的位置
if (op == 'U') {
if (cur == 1) {
cur = num;
} else {
cur -= 1;
}
if (pre == 1) {//如果在顶上上移
for (int k = 0 ; k < 4 ; ++k) {
number[k] = num - (3 - k);
}
} else if (pre != 1 && pre == number[0]) {
for (int k = 0 ; k < 4 ; ++k) {
number[k] -= 1;
}
}
} else {
if (cur == num) {
cur = 1;
} else {
cur += 1;
}
if (pre == num) {
for (int k = 0 ; k < 4 ; ++k) {
number[k] = k + 1;
}
} else if (pre != num && pre == number[3]) {
for (int k = 0 ; k < 4 ; ++k) {
number[k] += 1;
}
}
}
// for (int k = 0 ; k < 4 ; ++k) {
// System.out.print(number[k] + " ");
// }
// System.out.println();
// System.out.println(cur);
}
for (int i = 0 ; i < 4 ; ++i) {
System.out.print(number[i] + " ");
}
System.out.println();
System.out.println(cur);
}
}
}
