题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
本题我用的是笨方法,一个个判断 这里主要是判断第二个字符是不是数字,用了Character.isDigit();
public class Main{
public static Map<Character,Character> map = new HashMap<Character,Character>()
{{
put('A','-');
put('D','+');
put('W','+');
put('S','-');
}};
public static void main(String[] args){
Scanner in = new Scanner(System.in);
StringBuffer row = new StringBuffer();
int rowNum = 0;
StringBuffer col = new StringBuffer();
int colNum = 0;
String s = in.nextLine();
String[] split = s.split(";");
boolean flag = false;
for(int i=0; i<split.length; i++){
if(split[i] == null || split[i] == "" || split[i].length()>3 || split[i].length() <2){
continue;
}
char ac = split[i].charAt(0);//获取第一个字符 如果不是字符 就下一个
if(!map.containsKey(ac)){
continue;
}else{
char c = map.get(ac);
if(ac == 'A' || ac == 'D'){
row.append(c);
}else if(ac == 'W' || ac == 'S'){
col.append(c);
}
//已经判断第一个是字符 开始判断后面还有没有,
for(int j=1; j<split[i].length(); j++){
char lin = split[i].charAt(j);
if(!Character.isDigit(lin)){
flag = true;
break;
}else{
if(ac == 'A' || ac == 'D'){
row.append(lin);
}else if(ac == 'W' || ac == 'S'){
col.append(lin);
}
}
}
if(row.length() <= 1 || flag) {
row = new StringBuffer();
flag = false;
}else{
rowNum += Integer.parseInt(row.toString());
}
if(col.length() <= 1 || flag){
col = new StringBuffer();
flag = false;
}else{
colNum += Integer.parseInt(col.toString());
}
row = new StringBuffer();
col = new StringBuffer();
}
}
System.out.println(""+rowNum+","+colNum);
}
}