题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
pair<int, int> parseCoordinate(const string& coord) {
pair<int, int> result = {0, 0};
if (coord.size() < 2 || coord.size() > 3 || (coord.size() == 3 && !isdigit(coord[2]))) {
return result;
}
char direction = coord[0];
int distance = stoi(coord.substr(1));
switch (direction) {
case 'A':result.first -= distance; break;
case 'D':result.first += distance; break;
case 'W':result.second += distance; break;
case 'S':result.second -= distance; break;
default: // Invalid direction
return result;
}
return result;
}
int main() {
string input;
getline(cin, input);
pair<int, int> currentPos = {0, 0};
stringstream ss(input);
string token;
while (getline(ss, token, ';')) {
pair<int, int> newPos = parseCoordinate(token);
if (newPos != make_pair(0, 0)) {
currentPos.first += newPos.first;
currentPos.second += newPos.second;
}
}
cout << currentPos.first << "," << currentPos.second << endl;
return 0;
}
