题解 | #坐标移动#

坐标移动

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

C++题解-坐标移动

1、主要封装了两个函数,一个用来切分总的字符串,另一个用来判断当前的字符串是否合法。

2、如果当前字符串合法,通过一个while循环计算移动的步数,并判断移动的是那个坐标,最终在初始坐标上进行移动

#include <bits/stdc++.h>
using namespace std;
vector<string> slep(string& str){
    int left = 0,right = 0,len =str.size();
    vector<string> vec;
    while(right < len){
        if(str[right] == ';'){
            vec.push_back(str.substr(left,right-left));
            right++;
            left = right;
        }else
            right++;        
    }
    return vec;
}

bool getstr(string& str){
    int len = str.size();
    if(len == 0)    return false;
    char tail = str[0];
    if(tail == 'A' || tail == 'S' || tail == 'W' || tail == 'D'){
        for(int i=1;i<len;i++){
            if(str[i] - '0' >= 0 && str[i] - '0' <10)
                ;
            else
                return false;
        }
        return true;
    }
    return false;
}

int main(){
    string str;
    cin>>str;
    vector<string> vec = slep(str);
    int len = vec.size();
    int x=0,y=0;
    for(int i=0;i<len;i++){
        if(getstr(vec[i])){
            int a=0,l = vec[i].size(),p=1;
            for(int j=l-1;j>0;j--){
                a += (vec[i][j] - '0')*p;
                p *= 10;
            }
            if(vec[i][0] == 'A')
                x -= a;
            if(vec[i][0] == 'S')
                y -= a;
            if(vec[i][0] == 'W')
                y += a;
            if(vec[i][0] == 'D')
                x += a;
        }
    }
    cout<<x<<","<<y<<endl;
    return 0;
}
全部评论

相关推荐

ALEX_BLX:这华子能怪谁呢,池子泡这么深,每年几乎都是最晚一批开出来的公司,人才早就给抢走了。又不是人人都是博士生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务