题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string yidong; int X = 0, Y = 0; vector<string> data; string num = ""; while (cin >> yidong) { for (int i = 0; i < yidong.size(); i++) { if (yidong[i] != ';') { num += yidong[i]; } else if (yidong[i] == ';') { data.push_back(num); num = ""; continue; } } for (auto it : data) { // 首先判断是否为合法数据 if ((it[0] != 'A' && it[0] != 'D' && it[0] != 'W' && it[0] != 'S') || !isdigit(it[1])) { continue; } else if (it.size() == 3 && isdigit(it[2])) { // 将字符串的第二、第三个字符转成整形数字 int num1 = int(it[1] - '0'); int num2 = int(it[2] - '0'); // 判断转换是否成功,如果字符串中包含除数字、大小写字母、分号之外的字符,那么转换会失败 if (num1 < 0 || num1 > 9 || num2 < 0 || num2 > 9) { continue; } // 根据第一个字符进行操作 if (it[0] == 'A') { X -= (num1 * 10 + num2); } else if (it[0] == 'D') { X += (num1 * 10 + num2); } else if (it[0] == 'W') { Y += (num1 * 10 + num2); } else if (it[0] == 'S') { Y -= (num1 * 10 + num2); } } else if (it.size() == 2) { // 将字符串的第二、第三个字符转成整形数字 int num1 = int(it[1] - '0'); // 判断转换是否成功,如果字符串中包含除数字、大小写字母、分号之外的字符,那么转换会失败 if (num1 < 0 || num1 > 9) { continue; } // 根据第一个字符进行操作 if (it[0] == 'A') { X -= (num1); } else if (it[0] == 'D') { X += (num1); } else if (it[0] == 'W') { Y += (num1); } else if (it[0] == 'S') { Y -= (num1); } } } } cout << X << "," << Y << endl; system("pause"); return 0; } // 64 位输出请用 printf("%lld")