题解 | #坐标移动#

坐标移动

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

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

void splitString(vector<std::string>&vecTmp, string& s, const char& deli)
{
    auto firstPos = s.find_first_not_of(deli, 0); 
    auto lastPos = s.find_first_of(deli, firstPos);
    while(firstPos != std::string::npos || lastPos != std::string::npos)
    {
        vecTmp.push_back(s.substr(firstPos, lastPos- firstPos));
        firstPos = s.find_first_not_of(deli,lastPos);
        lastPos = s.find_first_of(deli, firstPos);
    }
}

bool IsJudgingleagalcoordinate(string& singleStr)
{
//    vector<char> vecUpper({'A','D','W','S'});
    if(singleStr.length() == 3)
    {
        if((singleStr[0] == 'A'|| singleStr[0] == 'D' 
        || singleStr[0] == 'W' || singleStr[0] == 'S')
         && isdigit(singleStr[1]) && isdigit(singleStr[2]))
        {
            return true;
        }
        return false;
    }
    if(singleStr.length() == 2)
    {
        if((singleStr[0] == 'A'|| singleStr[0] == 'D' 
        || singleStr[0] == 'W' || singleStr[0] == 'S')
         && isdigit(singleStr[1]))
        {
            return true;
        }
        return false;
    }
    return false;
}

int main() {
    int x=0, y=0;
    string str;
    vector<string> arTmp;
    string splitStr;
    getline(cin, str);
    splitString(arTmp, str, ';');
    for(int i=0;i<arTmp.size();++i)
    {
        if(IsJudgingleagalcoordinate(arTmp[i]))
        {
            splitStr = arTmp[i];
            if(splitStr[0] == 'A')
            {
                x -= atoi((splitStr.substr(1, 2)).c_str());
            }
            else if (splitStr[0] == 'D') 
            {
                x += atoi((splitStr.substr(1, 2)).c_str());
            }
            else if (splitStr[0] == 'W') 
            {
                y += atoi((splitStr.substr(1, 2)).c_str());
            }
            else 
            {
                y -= atoi((splitStr.substr(1, 2)).c_str());
            }
        }
    }
    cout << x << "," << y << endl;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务