题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
using namespace std;
#include <vector>
bool isNum(string &s) {
int n = s.size();
for (int i = 0; i < n; i++) {
if (!isdigit(s[i])) return false;
}
return true;
}
int Coordinate_Movement(string &s) {
int x = 0, y = 0;
vector<string>vec;//存储分割后的字符串
int n = s.size();
int len = 0;
for (int i = 0; i < n; ++i) {
if (s[i] == ';') {
vec.push_back(s.substr(i - len, len));
len = 0;
} else {
len++;
}
}
for (int i = 0; i < vec.size(); ++i) {
if(vec[i].empty() || vec[i].size() == 1) continue;
string s1 = vec[i].substr(1);
if (isNum(s1)) {
switch (vec[i][0]){
case'A': x -= stoi(s1);break;
case'D': x += stoi(s1);break;
case'W': y += stoi(s1);break;
case'S': y -= stoi(s1);break;
deflaut: break;
}
}
}
cout<<x<<','<<y<<endl;
return 0;
}
int main() {
string s;
getline(cin, s);
Coordinate_Movement(s);
return 0;
}
// bool isNum(string s) {
// int n = s.size();
// for (int i = 0; i < n; i++) {
// if (!isdigit(s[i])) return false;
// }
// return true;
// }
// int main() {
// string s;
// int x = 0, y = 0;
// while (getline(cin, s, ';')) {
// if (s.empty())continue;
// int len = s.size();
// string s1 = s.substr(1);
// if (isNum(s1)) {
// switch (s[0]) {
// case'A': x -= stoi(s1);break;
// case'D': x += stoi(s1);break;
// case'W': y += stoi(s1);break;
// case'S': y -= stoi(s1);break;
// deflaut: break;
// }
// }
// }
// cout << x << ',' << y << endl;
// }
// int main() {
// string s;
// int x = 0, y = 0;
// while (getline(cin, s, ';')) {
// if (s.empty())continue;
// int len = s.size();
// if (len == 2 && s[0] == 'A' && isdigit(s[1]))x -= s[1] -'0';
// if (len == 2 && s[0] == 'D' && isdigit(s[1]))x += s[1] -'0';
// if (len == 2 && s[0] == 'W' && isdigit(s[1]))y += s[1] -'0';
// if (len == 2 && s[0] == 'S' && isdigit(s[1]))y -= s[1] -'0';
// if (len == 3 && s[0] == 'A' && isdigit(s[1]) && isdigit(s[2]))x -= stoi(s.substr(1));
// if (len == 3 && s[0] == 'D' && isdigit(s[1]) && isdigit(s[2]))x += stoi(s.substr(1));
// if (len == 3 && s[0] == 'W' && isdigit(s[1]) && isdigit(s[2]))y += stoi(s.substr(1));
// if (len == 3 && s[0] == 'S' && isdigit(s[1]) && isdigit(s[2]))y -= stoi(s.substr(1));
// }
// cout << x << ',' << y << endl;
// }

