题解 | #坐标移动#
坐标移动
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")