题解 | #坐标移动#

坐标移动

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

这道题的难点感觉就是怎么处理字符串。本题使用正则表达式是比较方便的,但是需要注意以下这种情况:

A;

当使用正则"\\d*"对其后面的数字进行匹配时,要判断'A'之后的字符串是否为空,如果是空的,则不必往下进行。如果使用正则"\\d+"对其后面的数字进行匹配时,则不用对'A'之后的字符串是否为空进行判断。

虽然样例没有出现这种情况,但是还是要考虑一下。

#include <bits/stdc++.h>
#include <regex>
using namespace std;
using LL = long long;

int main() {
    string s, t; 
    while (getline(cin, s)) {
        stringstream ss(s);
        LL x = 0, y = 0;
        while (getline(ss, t, ';')) {
            if (t.empty()) continue;
            string move_num = t.substr(1);
		    /*
            方式1:
                regex r("\\d+"); // +:至少匹配一次
                if (regex_match(move_num, r)) 
            方式2:
                regex r("\\d*"); // *:匹配任意次
                if ( move_num != "" && regex_match(move_num, r)) 
            */
		    regex r("\\d+");
            if (regex_match(move_num, r) ) {
                if (t[0] == 'W') {
                    y += stoi(move_num);
                } else if (t[0] == 'A') {
                    x -= stoi(move_num);
                } else if (t[0] == 'S') {
                    y -= stoi(move_num);
                } else if (t[0] == 'D') {
                    x += stoi(move_num);
                }
            }
        }
        printf("%lld,%lld\n", x, y);
    }

    return 0;
}

#c++##华为##华为笔试#
全部评论

相关推荐

身边有人上海、深圳&nbsp;6、7k&nbsp;都去了,真就带薪上班了。
程序员小白条:木的办法, 以后越来越差,还是家附近宅着吧,毕业的人越来越多,岗位都提供不出来,经济又过了人口红利期
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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