题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <cctype> #include <iostream> #include <sstream> #include <string> #include <vector> using namespace std; int main() { string str; getline(cin, str); istringstream iss(str); string token=""; vector<string> coordinates; //将所有的输入组成一个数组 while (getline(iss, token, ';')) { coordinates.push_back(token); } int x = 0, y = 0; int number=0; for (string coordinate : coordinates) { //只选择合法的三种情况 //1.有三位,三位都是有效字符 if ((coordinate.size() == 3) && isdigit(coordinate[1]) && isdigit(coordinate[2])) { number = (coordinate[1] - '0') * 10 + (coordinate[2] - '0'); } //2.只有两位,且都是有效字符 if ((coordinate.size() == 2) && isdigit(coordinate[1])) { number = coordinate[1] - '0'; } //3.只有1位 if (coordinate.size() == 1) number = 0; //左移 if (coordinate[0] == 'A') { x -= number; } //右移 else if (coordinate[0] == 'D') { x += number; } //上移 else if (coordinate[0] == 'W') { y += number; } //下移 else if (coordinate[0] == 'S') { y -= number; } } cout << x << "," << y << endl; return 0; }