题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream> #include <string> #include<vector> using namespace std; vector<string> split(string s, char c) { vector<string> res; int len = s.size(); int i = 0, sublen = 0; while(i < len) { if(s[i] != ';') sublen++; else { if(sublen != 0) { res.push_back(s.substr(i - sublen, sublen) ); // cout << s.substr(i - sublen, sublen) << endl; } sublen = 0; } i++; } return res; } int main() { int x = 0, y = 0; string s; cin >> s; vector<string> strs = split(s, ';'); for(int i = 0; i < strs.size(); ++i) { if(strs[i].size() == 0) break; int num = 0; // 先把num算出来 if(strs[i].size() == 3 && strs[i][1] >= '0' && strs[i][1] <= '9' && strs[i][2] >= '0' && strs[i][2] <= '9') num = stoi(strs[i].substr(1,2)); if(strs[i].size() == 2 && strs[i][1] >= '0' && strs[i][1] <= '9') num = stoi(strs[i].substr(1,1)); if(strs[i].size() == 1) num = 0; switch(strs[i][0]) { case 'W': y += num; break; // 这个特别要注意!!! case 'D': x += num; break; case 'S': y -= num; break; case 'A': x -= num; break; default: break; } } cout << x << "," << y; } // 64 位输出请用 printf("%lld")