题解 | #坐标移动#

坐标移动

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

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

int Coordinate_Movement(string str){
    int sublen = 0;//每个子串的长度
    int x = 0;
    int y = 0;
    vector<string> vec;
    for(int i = 0; i < str.size(); i++){//以';'为分隔,提取字符串
        if(str[i] != ';'){
            sublen++;
            continue;
        }
        vec.push_back(str.substr(i-sublen,sublen));
        sublen = 0;
    }

    for(int i = 0; i < vec.size(); i++){
        int num = 0;
        if(vec[i].size() == 3 && (vec[i][1] >= '0' && vec[i][1] <= '9') && (vec[i][2] >= '0' && vec[i][2] <= '9')){
            num = (vec[i][1] - '0') * 10 + (vec[i][2] - '0');//这里注意,将字符转成数字
        }
        else if(vec[i].size() == 2 && (vec[i][1] >= '0' && vec[i][1] <= '9')){
            num = (vec[i][1] - '0');
        }
        else if(vec[i].size() == 1){
            num = 0;
        }
        
        switch(vec[i][0]){
            case 'A':x -= num;
                break;
            case 'D':x += num;
                break;
            case 'S':y -= num;
                break;
            case 'W':y += num;
                break;
        }
    } 
    cout << x << ',' << y << endl;
    return 0;
}

int main(){
    
    string str;
    cin >> str;
    Coordinate_Movement(str);   
}
全部评论

相关推荐

程序员小白条:学历和简历问题,你想走开发,现在很难的啦,尤其后端方向很难走,前端、测开,都会好很多,另外要等8月底和9月初去投日常
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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