题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

#include <iostream>
#include <vector>
#include<string>
using namespace std;
bool check_cmd(string& cmd){
    if (cmd.size()>1&&cmd.size()<=3){
    char dir= cmd[0];
    if(dir!='A' && dir!='D' && dir!='S' && dir!='W')
    return false;
    for(int i=1; i<cmd.size(); ++i)
    {
      if(cmd[i]<'0' || cmd[i]>'9'){
        return false;
      }  
    }
    return true;
    }
    return false;
}
int str_2_int(string& a){
    int num=0;
    for(int i=0; i<a.size(); ++i){
        num = num*10+a[i]-'0';
    }
    return num;
}
int main() {
    vector<string> command;
    string cmd_prt;
    while(getline(cin, cmd_prt,';')){
        if(cmd_prt.empty())continue;
        if(check_cmd(cmd_prt))
        command.push_back(cmd_prt);
    }
    //
    pair<int, int> position(0,0);
    for(int i=0; i<command.size(); ++i){
        string buff =command[i];
        char move=buff[0];
        string buff2 = buff.substr(1,buff.size()-1);
        int stride = str_2_int(buff2);
        if(move=='A'){position.first -= stride;}
        else if (move=='D') {position.first += stride;}
        else if (move=='W') {position.second += stride;}
        else{position.second -= stride;}
    }
    cout<<position.first<<","<<position.second;
    //
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务