题解 | #坐标移动#

坐标移动

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;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务