题解 | #坐标移动#
坐标移动
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]);
}
}
查看3道真题和解析