@yexiaoqi
2022-05-20T08:38:36.000000Z
字数 982
阅读 666
刷题
题目:大意是 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);}}
