题解 | #坐标移动#

坐标移动

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

#include <cctype>
#include <iostream>
#include <string>
using namespace std;

void Move(int &x, int &y, string mv) {
    if(mv.size() < 2 || mv.size() > 3) return;  // 指令无效
    // 获取移动距离
    int dis = 0;
    if(isdigit(mv[1]) && (mv.size()==2 || isdigit(mv[2]))) {
        dis = stoi(mv.substr(1, 2));
    }
    switch (mv[0]) {
        case 'A':
            x -= dis;
            break;
        case 'D' :
            x += dis;
            break;
        case 'W' :
            y += dis;
            break;
        case 'S' :
            y -= dis;
            break;
        default:
            break;
    }
}

int main() {
    string str;
    cin >> str;
    int x = 0, y = 0;   // 起始坐标

    // 遍历str,获取每一步移动指令
    int pos = 0;
    for(int i=0; i<str.size(); ++i) {
        if(str[i] == ';') {
            Move(x, y, str.substr(pos, i - pos));
            pos = i+1;
        }
    }
    cout << x << ',' << y;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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