题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <bits/stdc++.h>
using namespace std;
bool isLegal(string& str){
if(!(str[0]=='A'||str[0]=='D'||str[0]=='S'||str[0]=='W'))return false;
for(int i=1;i<str.size();i++){
if(!isdigit(str[i]))return false;
}
return true;
}
int main(){
string s;
cin>>s;
string str;
int x=0,y=0;
int dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
for(auto c:s){
if(c==';'){
if(str.size()>3){
str.clear();
continue;
}
if(isLegal(str)){
int index;
char c=str[0];
if(c=='A')index=0;
else if(c=='D')index=1;
else if(c=='W')index=2;
else index=3;
string num_str=str.substr(1);
int num=stoi(num_str);
x+=num*dir[index][0],y+=num*dir[index][1];
}
str.clear();
}
else str+=c;
}
cout<<x<<','<<y;
return 0;
}