题解 | 坐标移动
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
using namespace std;
int x = 0;
int y = 0;
inline bool isMove(char c) {
return c == 'A' || c == 'W' || c == 'S' || c == 'D';
}
inline bool isNumber(char c) {
return c >= '0' && c <= '9';
}
void executeCommand(const string& command) {
int n = command.size();
if (n < 2 || !isMove(command[0])) {
return;
}
char c;
int step = 0;
for (int i = 1; i < n; i++) {
c = command[i];
if (!isNumber(c) || (i == 1 && c == '0')) {
return;
}
step = step * 10 + c - '0';
}
switch (command[0]) {
case 'A':
x -= step;
break;
case 'W':
y += step;
break;
case 'S':
y -= step;
break;
case 'D':
x += step;
break;
}
// cout << x << "," << y << endl;
}
int main(int, char**) {
string s;
cin >> s;
int n = s.size();
int i = 0;
while (i < n) {
auto pos = s.find(';', i);
if (pos == string::npos) {
break;
}
int length = pos - i;
string command = s.substr(i, length);
// cout << command << endl;
executeCommand(command);
i = pos + 1;
}
cout << x << "," << y << endl;
}
