题解 | #坐标移动#

坐标移动

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

//不用正则表达式,用双指针处理字符串分割的问题
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    while (cin >> s) { // 注意 while 处理多个 case
        int i=0, j=0;
        int x=0, y=0;
        while(s[i]!='\0'){

            if(s[i]!=';'){
                i++;
            }else{
                auto s_sub = s.substr(j, i-j);
                // cout<<s_sub<<endl;
                int sum=0, n=1;
                if (s_sub.length()>1 && (s_sub[0]=='A' || s_sub[0]=='D' || s_sub[0]=='W' || s_sub[0]=='S')){
                    for(int i=s_sub.length()-1;i>0;i--){
                        if(s_sub[i]>='0' && s_sub[i]<='9'){
                            sum+=(s_sub[i]-'0')*n;
                           
                        }else{
                            sum=0;
                            break;
                        }

                        n=n*10;
                    }

                    // cout<<"sum"<<sum<<endl;
                    // switch (s_sub[0]) {
                    // case 'A': x-=sum;
                    // case 'D': x+=sum;
                    // case 'W': y+=sum;
                    // case 'S': y-=sum;
                    // default:break;

                    if(s_sub[0]=='A'){
                        x-=sum;
                    }else if(s_sub[0]=='D'){
                        x+=sum;
                    }else if(s_sub[0]=='W'){
                        y+=sum;
                    }else if(s_sub[0]=='S'){
                        y-=sum;
                    }
                
                                }

                

                j = i+1;
                i++;
            }

        }

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

全部评论

相关推荐

07-02 13:52
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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