题解 | #坐标移动#

坐标移动

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String line = "";
        Pattern pa = Pattern.compile("^[ADWS]\\d{1,2}$");
        int x = 0, y = 0;
        while ((line = bf.readLine()) != null) {
            String[] results = line.split(";");
            for (String result : results) {
                Matcher matcher = pa.matcher(result);
                if (matcher.find()) {
                    char[] chs = result.toCharArray();
                    char c = chs[0];
                    int val = 0;
                    val = Integer.parseInt(result.substring(1));
                    switch (c) {
                        case 'A':
                            x -= val;
                            break;
                        case 'D':
                            x += val;
                            break;
                        case 'W':
                            y += val;
                            break;
                        case 'S':
                            y -= val;
                            break;
                    }
                }
            }
            System.out.println(x + "," + y);
        }
    }
}
  1. 注意:字符类型char对象转化为int类型对象,会将字符对象的ASCII值转换成int类型的值。比如字符'1'转化成为int类型的值,
int i = '1';//i的值为50,而不是1
  1. 注意正则表达式,如果想明确Pattern.compile的模式是适用于整个字符串(而不是其中包含的某个子字符串适用即可),前后加上^和$表示字符串开始和结束。
  2. 正则表达式中,转义符是反斜杠“\”(反斜杠可以这么记,它与x正方向的夹角大于90度,斜率为负数,所以称之为反斜杠)。
  3. 获取字符串中的子字符串第一时间想到API为string.substring()。(两个参数是左含右不含,1个参数是此下标到末尾(包含末尾字符))
  4. ASWD具体对应的规则要看清题意,不可以自己凭看题目时的记忆,具体代码时随便写。
全部评论

相关推荐

DKS233:(1)专业技能:Java8也太旧了,最少也要了解到JDK17吧,可以参考现在SpringBoot支持的Java最低版本,熟悉mysql基本理论具体指啥,是锁这种具体原理还是分库分表这些业务场景,spring这些专业词汇,大小写要写对(全篇简历都有这个问题,显得不严谨),熟悉使用框架进行业务开发就别写了,如果要写,起码要写到框架原理部分吧,比如aop,启动原理什么的,springcloud具体指哪些模块呢,写清楚,网关还是鉴权还是什么,“改造”没必要写吧,你直接说用springcloud开发的不就行了(2)项目经历:首先格式就有大问题,时间怎么能换行呢,调整一下,响应速度那个,如果指的是将部分数据从其他数据库转到redis的提升就别写了,因为这个不算难点,redis可以写写分布式这些,比如容灾怎么实现的,数据库同步怎么做的
点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务