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