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

全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-11-25 09:53
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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