题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
//
// Created by 11599 on 2023/4/24.
//
#include "iostream"
#include "vector"
using namespace std;
bool isLeagle(string s){
if(s.size() < 2 || s.size() > 3) //长度不合法
return false;
if(s[0] != 'A' && s[0] != 'D' && s[0] != 'S' && s[0] != 'W')
return false;
for(int i = 1; i < s.size(); ++i){
if(s[i] < '0' || s[i] > '9')
return false;
}
return true;
}
int main(){
string s;
pair<int,int> dir(0,0);
while (cin >> s){
int j = 0;
for (int i = 0; i < s.size(); ++i) {
string ss;
if(s[i] == ';'){
ss = s.substr(j,i-j);
j = i + 1;
}
if(isLeagle(ss) == false)
continue;
//开始
string step = ss.substr(1,ss.size()-1);
int num = 0;
if(step.size() < 2){
num = step[0] - '0';
} else{
num = (step[0] - '0')*10 + step[1] - '0';
}
if(ss[0] == 'A'){
dir.first -= num;
} else if (ss[0] == 'D'){
dir.first += num;
} else if (ss[0] == 'W'){
dir.second += num;
} else if (ss[0] == 'S'){
dir.second -= num;
}
}
cout << dir.first << ',' << dir.second << endl;
}
}
查看2道真题和解析