题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
秀啊,模拟,尽量少用现成的函数 #include <iostream> using namespace std; int main() { int x = 0, y = 0; string s; cin >> s; int l = 0, r = 0; for ( ; l < s.size() && r < s.size(); ) { if (s[r] == ';') { //此时发现子串 string tmp = s.substr(l, r - l); //tmp就是子串,先判断合法性 if (tmp.size() == 2) { if (tmp[0] == 'A') { if (tmp[1] >= '0' && tmp[1] <= '9') { //此时执行a的操作 x -= tmp[1] - '0'; } } if (tmp[0] == 'D') { if (tmp[1] >= '0' && tmp[1] <= '9') { //此时执行a的操作 x += tmp[1] - '0'; } } if (tmp[0] == 'W') { if (tmp[1] >= '0' && tmp[1] <= '9') { //此时执行a的操作 y += tmp[1] - '0'; } } if (tmp[0] == 'S') { if (tmp[1] >= '0' && tmp[1] <= '9') { //此时执行a的操作 y -= tmp[1] - '0'; } } } if (tmp.size() == 3) { if (tmp[1] < '0' || tmp[1] > '9' || tmp[2] < '0' || tmp[2] > '9' ){ }else{ if (tmp[0] == 'A') x -= stoi(tmp.substr(1,2)); if (tmp[0] == 'D') x += stoi(tmp.substr(1,2)); if (tmp[0] == 'W') y += stoi(tmp.substr(1,2)); if (tmp[0] == 'S') y -= stoi(tmp.substr(1,2)); } } //处理完成以后 l = r + 1; ++r; } else { ++r; } } cout<<x<<','<<y<<endl; }