题解 | #MP3光标位置#

MP3光标位置

http://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                int n = sc.nextInt();
                String s = sc.next();
                int index =1;//光标位置
                int start =1;//记录当前列表的起始位置
                if(n<=4){
                    for(int i=1;i<n;i++){
                        System.out.print(i+" ");
                    }
                    System.out.println(n);
                    for(int j=0;j<s.length();j++){
                        if(index==1 && s.charAt(j)=='U'){
                            index=n;
                        }else if(index==n && s.charAt(j)=='D'){
                            index=1;
                        }else{
                            if(s.charAt(j)=='U'){
                                index--;
                            }else{
                                index++;
                            }
                        }
                    }
                    System.out.println(index);
                }else{
                    for(int j=0;j<s.length();j++){
                        if(index==1 && s.charAt(j)=='U'){
                            index=n;
                            start=n-3;//当从1翻到最后一页时,start值是最后一页的第一个值
                        }else if(index==n && s.charAt(j)=='D'){
                            index=1;
                            start=1;//当从最后一页翻到第一页时,start变成1
                        }else{
                            if(s.charAt(j)=='U'){
                                if(index==start){
                                  //当当前操作是up,且当前位置是当前页的第一个位置时,start要往上移动
                                    start--;
                                }
                                index--;
                            }else{
                                if(index==(start+3)){
                                  //当当前操作是down,且当前位置是当前页的最后一个位置时,start要往下移动
                                    start++;
                                }
                                index++;
                            }
                        }
                    }
                    //直接打印start 及后三位
                            for(int i=start;i<start+3;i++){
                                System.out.print(i+" ");
                            }
                            System.out.println(start+3);
                    System.out.println(index);
                }
            }
        }
}
全部评论

相关推荐

10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务