题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
一开始漏了一个条件,觉得太复杂了 \捂脸\
题目中说,至多只能有两位数字,那么合法性判断就稍微简单一些了。
思路 :thinking:
- 首先,使用
;
对输入串进行分割,得到arr
数组; - 遍历
arr
,并做合法性判断- 若
s
长度小于1,或者首字母不是 W、A、S、D,则不合法; - 若
s
第二、第三个字符(如果存在的话)不是数字,则不合法
- 若
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String line = in.nextLine();
String[] arr = line.split(";");
int x = 0;
int y = 0;
for (String s : arr) {
// 合法性判断
if (s.length() <= 1 || (s.charAt(0) != 'W' && s.charAt(0) != 'A' && s.charAt(0) != 'S' && s.charAt(0) != 'D')) {
continue;
}
if (!Character.isDigit(s.charAt(1)) || (s.length() == 3 && !Character.isDigit(s.charAt(2)))) {
continue;
}
// 获取数字
int d = Integer.parseInt(s.substring(1));
switch (s.charAt(0)) {
case 'W':
y += d;
break;
case 'S':
y -= d;
break;
case 'A':
x -= d;
break;
case 'D':
x += d;
break;
default:
break;
}
}
System.out.println(x + "," + y);
in.close();
}
}