题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <bits/stdc++.h>
using namespace std;
int main() {
string str;
getline(cin, str);
vector <string> v;
int begin = 0;
int num = 0;
int firstnum = 0;
int secondnum = 0;
for (int i = 0; i < str.size(); i++) { //切割字符串,分号为切割符
if (str[i] == ';') {
if (num == 0) {
} else {
v.push_back(str.substr(begin, num));
}
begin = i + 1;
num = 0;
continue;
}
num++;
}
///////////////////////////切割完成之后,所有的信息都在v的数组中///////////////
for (int i = 0; i < v.size(); i++) {
if (v[i].size() > 3 || v[i].size() < 2) { //数组长度不是3/2肯定无效
continue;
} else if (v[i].size() == 2) {//长度为2
if (v[i][0] == 'A' && v[i][1] >= '0' && v[i][1] <= '9') {
firstnum -= v[i][1] - '0';
} else if (v[i][0] == 'D' && v[i][1] >= '0' && v[i][1] <= '9') {
firstnum += v[i][1] - '0';
} else if (v[i][0] == 'W' && v[i][1] >= '0' && v[i][1] <= '9') {
secondnum += v[i][1] - '0';
} else if (v[i][0] == 'S' && v[i][1] >= '0' && v[i][1] <= '9') {
secondnum -= v[i][1] - '0';
} else {
continue;
}
} else if (v[i].size() == 3) {//长度为3
if (v[i][0] == 'A' && v[i][1] >= '0' && v[i][1] <= '9' && v[i][2] >= '0' &&v[i][2] <= '9') {
firstnum -= (v[i][1] - '0') * 10 + v[i][2] - '0';
} else if (v[i][0] == 'D' && v[i][1] >= '0' && v[i][1] <= '9' &&v[i][2] >= '0' && v[i][2] <= '9') {
firstnum += (v[i][1] - '0') * 10 + v[i][2] - '0';
} else if (v[i][0] == 'W' && v[i][1] >= '0' && v[i][1] <= '9' && v[i][2] >= '0' && v[i][2] <= '9') {
secondnum += (v[i][1] - '0') * 10 + v[i][2] - '0';
} else if (v[i][0] == 'S' && v[i][1] >= '0' && v[i][1] <= '9' && v[i][2] >= '0' && v[i][2] <= '9') {
secondnum -= (v[i][1] - '0') * 10 + v[i][2] - '0';
} else {
continue;
}
}
}
cout<<firstnum<<','<<secondnum<<endl;
}
// 64 位输出请用 printf("%lld")
