题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <cctype> #include <iostream> #include <string> using namespace std; void Move(int &x, int &y, string mv) { if(mv.size() < 2 || mv.size() > 3) return; // 指令无效 // 获取移动距离 int dis = 0; if(isdigit(mv[1]) && (mv.size()==2 || isdigit(mv[2]))) { dis = stoi(mv.substr(1, 2)); } switch (mv[0]) { case 'A': x -= dis; break; case 'D' : x += dis; break; case 'W' : y += dis; break; case 'S' : y -= dis; break; default: break; } } int main() { string str; cin >> str; int x = 0, y = 0; // 起始坐标 // 遍历str,获取每一步移动指令 int pos = 0; for(int i=0; i<str.size(); ++i) { if(str[i] == ';') { Move(x, y, str.substr(pos, i - pos)); pos = i+1; } } cout << x << ',' << y; return 0; } // 64 位输出请用 printf("%lld")