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

全部评论

相关推荐

每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:05
俺不中了,BOSS遇到了一个hr,我觉得我咨询的问题都很正常吧,然后直接就被拒绝了???
恶龙战士:你问的太多了,要不就整理成一段话直接问他,一个一个问不太好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务