链接:https://www.nowcoder.com/questionTerminal/fc72d3493d7e4be883e931d507352a4a
来源:牛客网
牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。
输入描述:
每个输入包含一个测试用例。 每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。 接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。
输出描述:
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。
示例1
输入
3 LRR
输出
E
解题思路:以北方为基准,(右转的次数-左转的次数)%4:-3代表最终左转3次,-2代表最终左转2次,-1代表最终左转1次,0代表转回了原地,1代表最终右转1次,2代表最终右转2次,3代表最终右转3次。
package BiShiTi;
import java.util.Scanner;
/**
* 开始面朝北,求n次左转、右转后的方向
*/
public class m_0025 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String str = sc.next();
int dir = FinalDir(N, str);
switch (dir) {
case 0:
System.out.println('N');
break;
case 1:
case -3:
System.out.println('E');
break;
case 2:
case -2:
System.out.println('S');
break;
case 3:
case -1:
System.out.println('W');
break;
default:
break;
}
}
/**
* (右转的次数-左转的次数)%4:-3代表最终左转3次,-2代表最终左转2次,-1代表最终左转1次,0代表转回了原地,1代表最终右转1次,2代表最终右转2次,3代表最终右转3次
*/
public static int FinalDir(int N, String str) {
int turnL = 0;
int turnR = 0;
for (int i = 0; i < N; i++) {
if (str.charAt(i) == 'L') {
turnL ++;
}else {
turnR ++;
}
}
return (turnR - turnL) % 4;
}
}