题解 | #坐标移动#
坐标移动
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")
查看17道真题和解析