题解 | #坐标移动#

坐标移动

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

关键还是正则表达式的运用
regex = "^[W|S|A|D]\\d\\d" 这样写就是,没有好好审题,它说的是两个数以内。这样写\\d\\d就必须两个数
regex ="[W|S|A|A]\\d{1,2}"这样写就是 \\d 出现{1,2} 次都行。 \\d 可以替换为[0-9]
以A或S或W或D开头的写法^[A|S|W|D] 其实可以替换为[ASWD]也是匹配ASWD其中一个就行。
反正 正则表达式是 python/shell 脚本中常常用到的,后悔没好好学~=~
import java.util.Scanner;
import java.util.regex.Pattern;

/**
 *  正则匹配 Pattern.matches(要匹配的规则,要匹配的数据)
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String[] Olddatas = str.split(";");

        // String类已经重新定义matches()方法
                //  其实底层还是调用的 Pattern的方法。
        String pattern = "^[A|S|W|D]\\d{1,2}";
        int d1 =0;
        int d2 =0;
        for (String datas : Olddatas) {
            if(Pattern.matches(pattern,datas)){
                String s1 = datas.substring(0,1); // 不包含1
                String s2 = datas.substring(1);
                switch (s1){
                    case "A":
                        d1 -= Integer.parseInt(s2);
                        break;
                    case "S":
                        d2 -= Integer.parseInt(s2);
                        break;
                    case "W":
                        d2 += Integer.parseInt(s2);
                        break;
                    case "D":
                        d1 += Integer.parseInt(s2);
                        break;
                    default:
                        d1 = 0;
                        d2 = 0;
                }
            }
        }
        System.out.println(d1+","+d2);
    }
}


全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务