题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
#include <string>
using namespace std;
bool isNumber(string s) {
for (auto & ss : s) {
if (ss<'0' || ss > '9') return false;
}
return true;
}
int main() {
int x = 0, y = 0;
string s;
cin >> s;
for (int i = 0; i < s.length(); ++i) {
if (s[i] == ';') continue;
else {
int num = 0;
string tmp = "";
while (s[i + num] != ';') {
tmp = tmp + s[i + num];
++num;
}
if (num > 3 || num < 2) {
i += num;
continue;
}
string tmp_2 = tmp.substr(1);
if (isNumber(tmp_2)) {
int number = stoi(tmp_2);
if (tmp[0] == 'A' && number > 0 && number < 100) {
x -= stoi(tmp_2);
}else if (tmp[0] == 'S' && number > 0 && number < 100) {
y -= stoi(tmp_2);
}else if (tmp[0] == 'W' && number > 0 && number < 100) y += stoi(tmp_2);
else if (tmp[0] == 'D'&& number > 0 && number < 100) x += stoi(tmp_2);
}
i += num;
}
}
cout << x << "," << y;
return 0;
}
// 64 位输出请用 printf("%lld")
