题解 | #坐标移动#
坐标移动
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); } }