题解 | 坐标移动
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { int x = 0, y = 0; string str; cin >> str; int start = 0; for(int i = 0; i < str.size(); ++i) { if(str[i] == ';' && i > 0) { string tmp = str.substr(start, i - start); start = i + 1; //更新指令起始位置 //A:向左移动 if(tmp.size() > 1 && tmp[0] == 'A') { tmp.erase(0, 1); int flag = 1; //用flag判断tmp里面是否含有除了0-9之外的其他字符 for(const char& c: tmp) { if(c - '0' > 9) { flag = 0; break; } } if(flag) { int num = stoi(tmp); if(num > 0 && num < 100) { x -= num; } } } //D:向右移动 else if(tmp.size() > 1 && tmp[0] == 'D') { tmp.erase(0, 1); int flag = 1; for(const char& c: tmp) { if(c - '0' > 9) { flag = 0; break; } } if(flag) { int num = stoi(tmp); if(num > 0 && num < 100) { x += num; } } } //W:向上移动 else if(tmp.size() > 1 && tmp[0] == 'W') { tmp.erase(0, 1); int flag = 1; for(const char& c: tmp) { if(c - '0' > 9) { flag = 0; break; } } if(flag) { int num = stoi(tmp); if(num > 0 && num < 100) { y += num; } } } //S:向下移动 else if(tmp.size() > 1 && tmp[0] == 'S') { tmp.erase(0, 1); int flag = 1; for(const char& c: tmp) { if(c - '0' > 9) { flag = 0; break; } } if(flag) { int num = stoi(tmp); if(num > 0 && num < 100) { y -= num; } } } } } cout << x << "," << y << endl; return 0; }
通俗易懂写法