题解 | 坐标移动

坐标移动

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

// 简单模拟。人和代码一样帅🙂!
#include <bits/stdc++.h>
#include <utility>
using namespace std;

pair<int, int> p = {0, 0};

void move(char c, int step){
    switch (c) {
        case 'A':
            p.first = p.first - step;
            break;
        case 'D':
            p.first = p.first + step;
            break;
        case 'S':
            p.second = p.second - step;
            break;
        case 'W':
            p.second = p.second + step;
            break;
        default:
            break;
    }
}

void handle(string s){
    if(s.empty() || (s[0] != 'A' && s[0] != 'D' && s[0] != 'S' && s[0] != 'W')) return;
    int step = 0;
    for(int i = 1; i < s.size(); i ++ ){
        if(s[i] > '9' || s[i] < '0') return;
        step = step * 10 + s[i] - '0';
    }
    move(s[0], step);
}

int main() {
    string s;
    cin >> s;
    string action;
    for(const auto &c : s){
        if(c == ';'){
            // 处理
            handle(action);
            // cout << "action: " << action << "\n";
            action.clear();
        }else{
            action.push_back(c);
        }
    }
    cout << p.first << "," << p.second << "\n";
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论
点赞 回复 分享
发布于 02-19 22:58 北京

相关推荐

牛客963010790号:一般是hr拿着老板账号在招人不是真是老板招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务