题解 | #坐标移动#

坐标移动

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

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

vector<string> split(string s, char c)
{
    vector<string> res;
    int len = s.size();
    int i = 0, sublen = 0;
    while(i < len)
    {
        if(s[i] != ';') sublen++;
        else
        {
            if(sublen != 0) 
            {
                res.push_back(s.substr(i - sublen, sublen) );
                // cout << s.substr(i - sublen, sublen) << endl;
            }
            sublen = 0;
        }
        i++;
    }
    return res;
}

int main() {
    int x = 0, y = 0;
    string s;
    cin >> s;
    vector<string> strs = split(s, ';');
    for(int i = 0; i < strs.size(); ++i)
    {
        if(strs[i].size() == 0) break;
        int num = 0;                    // 先把num算出来
        if(strs[i].size() == 3 && strs[i][1] >= '0' && strs[i][1] <= '9' && strs[i][2] >= '0' && strs[i][2] <= '9')
            num = stoi(strs[i].substr(1,2));
        if(strs[i].size() == 2 && strs[i][1] >= '0' && strs[i][1] <= '9')
            num = stoi(strs[i].substr(1,1));
        if(strs[i].size() == 1) num = 0;
        switch(strs[i][0])
        {
            case 'W': y += num; break;   // 这个特别要注意!!!
            case 'D': x += num; break;
            case 'S': y -= num; break;
            case 'A': x -= num; break;
            default: break;
        }
    }
    cout << x << "," << y;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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