题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
#include <string>
#include <cctype>
#include <array>
#include <unordered_set>
using namespace std;
unordered_set<char> smap{'A', 'D', 'S', 'W'};
int regrex_search(string s, int& start, int& step) {
if (s[start - 1] == ';' && smap.count(s[start])) {
int i = start + 1;
if (isdigit(s[i])) {
if (s[i + 1] == '\0' || s[i + 1] == ';') {
step = stoi(s.substr(i, 1));
return 1;
}
if (isdigit(s[i + 1]) && (s[i + 2] == ';' || s[i + 2] == '\0')) {
step = stoi(s.substr(i, 2));
return 2;
}
}
}
return 0;
}
int main() {
string ss;
cin >> ss;
if (ss == "") {
return 0;
}
ss = ';' + ss;
array<int, 2> idx = {0, 0};
for (int i = 0; i < ss.length(); ++i) {
int step = 0;
int id_i = regrex_search(ss, i, step);
if (id_i) {
switch (ss[i]) {
case 'A':
idx[0] -= step;
break;
case 'D':
idx[0] += step;
break;
case 'S':
idx[1] -= step;
break;
case 'W':
idx[1] += step;
break;
}
i += id_i;
}
}
cout << idx[0] << "," << idx[1] << endl;
}
美团成长空间 2663人发布
