题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
// // Created by 11599 on 2023/4/24. // #include "iostream" #include "vector" using namespace std; bool isLeagle(string s){ if(s.size() < 2 || s.size() > 3) //长度不合法 return false; if(s[0] != 'A' && s[0] != 'D' && s[0] != 'S' && s[0] != 'W') return false; for(int i = 1; i < s.size(); ++i){ if(s[i] < '0' || s[i] > '9') return false; } return true; } int main(){ string s; pair<int,int> dir(0,0); while (cin >> s){ int j = 0; for (int i = 0; i < s.size(); ++i) { string ss; if(s[i] == ';'){ ss = s.substr(j,i-j); j = i + 1; } if(isLeagle(ss) == false) continue; //开始 string step = ss.substr(1,ss.size()-1); int num = 0; if(step.size() < 2){ num = step[0] - '0'; } else{ num = (step[0] - '0')*10 + step[1] - '0'; } if(ss[0] == 'A'){ dir.first -= num; } else if (ss[0] == 'D'){ dir.first += num; } else if (ss[0] == 'W'){ dir.second += num; } else if (ss[0] == 'S'){ dir.second -= num; } } cout << dir.first << ',' << dir.second << endl; } }