题解 | #坐标移动#
坐标移动
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);
}
}
海康威视公司福利 1182人发布
查看5道真题和解析