题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
import java.util.Scanner; import java.util.*; // 把字符串按;分割,每一个都用两个栈把合法的字母与数字压入栈中,再一起出栈处理 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); String[] list = input.split(";"); int[] location = new int[2]; for (String s : list) { Stack<Character> letter= new Stack<>(); Stack<Integer> step= new Stack<>(); if (!s.isEmpty()){ int i=0; if(s.charAt(i)=='X') continue; for (; i < s.length(); i++){ char cur = s.charAt(i); if (Character.isDigit(cur)){ int num=0; while (i<s.length()&&Character.isDigit(s.charAt(i))){ num=num*10+Integer.parseInt(String.valueOf(s.charAt(i))); i++; } step.push(num); } if(cur=='A'||cur=='D'||cur=='W'||cur=='S'){ letter.push(s.charAt(i)); // System.out.println(letter); }else break; } if(i<s.length()) continue; } if(!letter.isEmpty()&&!step.isEmpty()&&step.size()==letter.size()) { for (int j = 0; j < letter.size(); j++){ int num = step.pop(); switch (letter.peek()) { case 'A': location[0] = location[0] - num; break; case 'D': location[0] = location[0] + num; break; case 'S': location[1] = location[1] - num; break; case 'W': location[1] = location[1] + num; break; default: } } letter.clear(); } } System.out.println(location[0]+","+location[1]); } }