题目描述
牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。
输入描述
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。
接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。
输出描述
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。
解题思路
- 转向总共就4个,东西南北可以设置一个方向数组按照从北开始顺时针旋转,然后下标标识当前指向的方向
- 根据地图旋转那么此时就是需要求解根据这个方向最后下标落到哪里,那么久转换为根据方向去将下标索引左移和右移
- 左移右移是一个循环移动的过程需要考虑越界,那么左移index= (index+length-1)%length, 右移index = (index+1)%length;
源代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String str = sc.next();
String result = getDirect(N, str);
System.out.println(result);
}
private static String getDirect(int times, String maps) {
String[] direct = {"N","E","S","W"};
int length = direct.length;
int index = 0;//面向方向的下标
for (int i=0; i<times; i++) {
if (maps.charAt(i)=='L') {
index = (index+length-1)%length;
} else {
index = (index+1)%length;
}
}
return direct[index];
}
}