【编程题m_0025】迷路的牛牛

链接: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;
	}
}

猜你喜欢

转载自my.oschina.net/MasterLi161307040026/blog/1812653