@yexiaoqi
2022-05-20T16:38:36.000000Z
字数 982
阅读 438
刷题
题目:大意是 mp3 屏幕最多显示 4 首歌曲,输入歌曲数量、一串由'U'、'D'组成的命令进行控制,输出屏幕显示的列表和当前歌曲。
链接:https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
只保存屏幕上第一首歌曲,后面的歌曲通过计算而得。代码很多,但思路清晰
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
String cmd = sc.next();
show(n, cmd);
}
}
public static void show(int n, String cmd){
int first = 1;
int cur = 0;
//读取命令执行
for(int i=0; i<cmd.length(); i++){
char c = cmd.charAt(i);
if(n <= 4){
if(cur==0 && c=='U') cur=n-1;
else if(cur==n-1 && c=='D') cur=0;
else if(c=='U') cur--;
else if(c=='D') cur++;
} else {
if(cur==0 && first+cur==1 && c=='U') {
first=n-3;//更新屏幕
cur=3;
} else if(cur==3 && first+cur==n && c=='D'){
first=1;//回到第一屏
cur=0;
} else if(cur==0 && c=='U') {
first-=1;//列表向上移动一个
} else if(cur==3 && c=='D') {
first+=1;//列表向下移动一个
} else if(c=='U') cur--;
else if(c=='D') cur++;
}
}
StringBuilder list = new StringBuilder();
int m = n>4 ? 4 : n;
for(int i=0; i<m; i++){
list.append(first+i).append(" ");
}
System.out.println(list.toString().trim());
System.out.println(first+cur);
}
}