欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

21天刷题计划之10.2—牛牛偶像养成记(Java语言描述)

程序员文章站 2022-07-14 23:37:28
...

题目描述:

牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。

输入描述:

每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。
接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。

输出描述:

输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。

示例1

输入
3
LRR

输出
E

分析:

由于最终输出只有四个方向,所以可以建立一个字符串数组String dir[]存储四个位置的信息,根据东南西北的相对位置,他们在数组中的相对位置分布为:

W N E S

W的左边为S,S的右边为W。循环数组。
初始指针pos = 1;
然后遍历输入的移动方向字符串,若是‘L’,则执行pos–操作,若是‘R’,则执行pos++操作,接着需要判别指针的位置,若pos<0,则将pos置为3,若pos>3,则将pos置为0;

代码实现如下:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws Exception {
		
		Scanner scan = new Scanner(System.in);
		while(scan.hasNext()){
			int times = scan.nextInt();
			String str = scan.next();
			System.out.println(faceDirection(times,str));
		}
		scan.close();
	}

	public static String faceDirection(int times, String str) throws Exception {
		
		if(times!=str.length()){
			throw new Exception("输入有误,请检查后重新输入!");
		}
		String[] dir = new String[4];
		int pos = 1;
		dir[0] = "W";//分别将四个方位按照相对位置存入数组。
		dir[1] = "N";
		dir[2] = "E";
		dir[3] = "S";
		
		for(int i = 0; i<str.length();i++){
			if(str.charAt(i)=='L'){
				pos--;
			}
			if(str.charAt(i)=='R'){
				pos++;
			}
			
			if(pos<0){
				pos = 3;
			}
			if(pos>3){
				pos = 0;
			}
		}
		return dir[pos];
	}

}