题解 | 坐标移动

#include <iostream>
#include <vector>
using namespace std;

int main() {
    string s;
    cin >> s;

    // 1. 获取所有;前的指令字符串
    string temp_cmd = "";
    vector<string> cmds;
    cmds.clear();
    for(char ch : s){
        if (ch != ';') {
            temp_cmd += ch;
        } else {
            cmds.push_back(temp_cmd);
            temp_cmd = "";
        }
    }

    int x = 0;
    int y = 0;
    // 2. 遍历指令字符串数组,对有效的指令字符串进行操作
    for (int i = 0; i < cmds.size(); i ++) {
        int len = cmds[i].size();
        char cmd = ' ';
        int move = 0;

        // 移动步数两位数
        if (len == 3) {
            cmd = cmds[i][0];
            if ((cmds[i][1] >= '0' && cmds[i][1] <= '9') 
                && (cmds[i][2] >= '0' && cmds[i][2] <= '9')) {
                move = (cmds[i][1] - '0') * 10 + cmds[i][2] - '0';
            }
        }
        // 移动步数个位数
        if (len == 2) {
            cmd = cmds[i][0];
            if (cmds[i][1] >= '0' && cmds[i][1] <= '9') {
                move = cmds[i][1] - '0';
            }
        }

        switch (cmd) {
        case 'A':
            x -= move;
            break;
        case 'D':
            x += move;
            break;
        case 'S':
            y -= move;
            break;
        case 'W':
            y += move;
            break;
        default:
            break;
        }
    }

    cout << x << "," << y << endl;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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