题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
//JAVA 用正则
//Map.getOrDefault()这个函数要活用起来。
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String inStr = sc.nextLine(); int x = 0 , y = 0; String[] codiArr = inStr.split(";"); //正则匹配 []里面匹配一个,java里面\\d是\d的转义,代表数字0-9 String regex = "[A|S|D|W]\\d{1}\\d?"; Map<Character,Integer> outMap = new HashMap<>(); //获取有效的坐标数据 for(int i =0;i<codiArr.length;i++){ if(codiArr[i].matches(regex)){ //outMap.getOrDefault(codiArr[i],1) //方法为如果map中已经有相应的key,就返回这个key对应的value,否则就返回后面的默认值,这里是设置的int类型的计算,所以这里根据需求设置默认值为0 outMap.put(codiArr[i].charAt(0),outMap.getOrDefault(codiArr[i].charAt(0),0) + Integer.parseInt(codiArr[i].substring(1,codiArr[i].length()))); } } x = x - outMap.get('A') + outMap.get('D'); y = y - outMap.get('S') + outMap.get('W'); System.out.println(x+","+y); } }