题解 | #坐标移动#

坐标移动

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;
    }

}

全部评论

相关推荐

点赞 评论 收藏
分享
09-05 21:24
已编辑
河北工业大学 Java
第三题&nbsp;n,m,k有用数位DP写出来的嘛~
查看1道真题和解析 投递携程等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务