题解 | #坐标移动#

坐标移动

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

本题主要考察字符串的处理,而c++没有Java中的split函数,所以造成一定的困扰。 这里我分享给大家一个高可用性的split函数。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
static void split(const string& s, vector<string>& tokens, const string& delimiters = " ")
{
    string::size_type lastPos = s.find_first_not_of(delimiters, 0);
    string::size_type pos = s.find_first_of(delimiters, lastPos);
    while (string::npos != pos || string::npos != lastPos) {
        tokens.push_back(s.substr(lastPos, pos - lastPos));
        lastPos = s.find_first_not_of(delimiters, pos);
        pos = s.find_first_of(delimiters, lastPos);
    }
}
int main() {
    string s;
    cin >> s;
    vector<string> tokens;
    int x = 0, y = 0;
    split(s, tokens, ";");
    for (auto &str : tokens) {
        if ((str.size() == 2 && isdigit(str[1])) || (str.size() == 3 && isdigit(str[1]) && isdigit(str[2]))) {
            switch (str[0]) {
                case 'W':
                    y += stoi(str.substr(1));
                    break;
                case 'A':
                    x -= stoi(str.substr(1));
                    break;
                case 'S':
                    y -= stoi(str.substr(1));
                    break;
                case 'D':
                    x += stoi(str.substr(1));
                    break;
                default:
                    break;
            }
        }
    }
    cout << x << "," << y << endl;
    return 0;
}

题解 文章被收录于专栏

本专栏收录的题解不求类似“一行代码”之类的奇技淫巧,只求开阔思路的适合大众提升编程思维的朴实无华的算法。

全部评论

相关推荐

冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务