题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
#include <string>
#include <vector>
#include <set>
using namespace std;
void move(string str,int &x,int&y){
//规则是:只能有一个字母,1~2个数字
if(str.size()>3 || str.size() == 0)return;
string strlen = str.substr(1,str.size());
int len = 0;
if(strlen.size() == 0)return;
else if (strlen.size() == 1) {
if (strlen[0] - '0' > 10)return;
len = strlen[0] - '0';
}
else {
if (strlen[1] - '0' > 10 || strlen[0] - '0' > 10)return;
len = strlen[1] - '0';
len += 10 * (strlen[0] - '0');
}
if(str[0] == 'A'){
x -= len;
}
if(str[0] == 'D'){
x+= len;
}
if(str[0] == 'W'){
y+=len;
}
if(str[0] == 'S'){
y-=len;
}
return;
}
int main(){
string input;
cin >> input;
int x = 0,y = 0;
string tmp;
for(int i = 0;i<input.size();++i){
if(input[i] != ';')tmp+=input[i];
else{
move(tmp,x,y);
tmp = "";
}
}
cout << x <<","<< y << endl;
return 0;
}
#include <string>
#include <vector>
#include <set>
using namespace std;
void move(string str,int &x,int&y){
//规则是:只能有一个字母,1~2个数字
if(str.size()>3 || str.size() == 0)return;
string strlen = str.substr(1,str.size());
int len = 0;
if(strlen.size() == 0)return;
else if (strlen.size() == 1) {
if (strlen[0] - '0' > 10)return;
len = strlen[0] - '0';
}
else {
if (strlen[1] - '0' > 10 || strlen[0] - '0' > 10)return;
len = strlen[1] - '0';
len += 10 * (strlen[0] - '0');
}
if(str[0] == 'A'){
x -= len;
}
if(str[0] == 'D'){
x+= len;
}
if(str[0] == 'W'){
y+=len;
}
if(str[0] == 'S'){
y-=len;
}
return;
}
int main(){
string input;
cin >> input;
int x = 0,y = 0;
string tmp;
for(int i = 0;i<input.size();++i){
if(input[i] != ';')tmp+=input[i];
else{
move(tmp,x,y);
tmp = "";
}
}
cout << x <<","<< y << endl;
return 0;
}