题解 | #坐标移动#

坐标移动

http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

一开始漏了一个条件,觉得太复杂了 \捂脸\

alt

题目中说,至多只能有两位数字,那么合法性判断就稍微简单一些了。

思路 :thinking:

  1. 首先,使用 ; 对输入串进行分割,得到 arr 数组;
  2. 遍历 arr,并做合法性判断
    • s 长度小于1,或者首字母不是 W、A、S、D,则不合法;
    • s 第二、第三个字符(如果存在的话)不是数字,则不合法
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        String[] arr = line.split(";");
        int x = 0;
        int y = 0;
        for (String s : arr) {
            // 合法性判断
            if (s.length() <= 1 || (s.charAt(0) != 'W' && s.charAt(0) != 'A'  && s.charAt(0) != 'S'  && s.charAt(0) != 'D')) {
                continue;
            }
            if (!Character.isDigit(s.charAt(1)) || (s.length() == 3 && !Character.isDigit(s.charAt(2)))) {
                continue;
            }
            // 获取数字
            int d = Integer.parseInt(s.substring(1));
            switch (s.charAt(0)) {
                case 'W':
                    y += d;
                    break;
                case 'S':
                    y -= d;
                    break;
                case 'A':
                    x -= d;
                    break;
                case 'D':
                    x += d;
                    break;
                default:
                    break;
            }
        }
        System.out.println(x + "," + y);
        in.close();
    }
}
全部评论

相关推荐

Noel_:中石油是这样的 哥们侥幸混进免笔试名单 一看给我吓尿了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务