题解 | #坐标移动#

坐标移动

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

#include <bits/stdc++.h>
using namespace std;
bool isLegal(string& str){
    if(!(str[0]=='A'||str[0]=='D'||str[0]=='S'||str[0]=='W'))return false;
    for(int i=1;i<str.size();i++){
        if(!isdigit(str[i]))return false;
    }
    return true;
}
int main(){
    string s;
    cin>>s;
    string str;
    int x=0,y=0;
    int dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
    for(auto c:s){
        if(c==';'){
            if(str.size()>3){
                str.clear();
                continue;
            }
            if(isLegal(str)){
                int index;
                char c=str[0];
                if(c=='A')index=0;
                else if(c=='D')index=1;
                else if(c=='W')index=2;
                else index=3;
                string num_str=str.substr(1);
                int num=stoi(num_str);
                x+=num*dir[index][0],y+=num*dir[index][1];
            }
            str.clear();
        }
        else str+=c;
    }
    cout<<x<<','<<y;
    return 0;
}
全部评论

相关推荐

牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务