题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int coordinate_movement(string str){//定义坐标移动函数
vector<string> s;
int x=0,y=0;
int k=0;
int maxn=str.size();
for(int i=0;i<maxn;i++){//分割字符串
if(str[i]!=';'){
k++;
continue;
}
s.push_back(str.substr(i-k, k));
k=0;
}
int len=s.size();
for(int i=0;i<len;i++){
int num=0;
if((s[i].size()==3)&&((isdigit(s[i][1])&&(isdigit(s[i][2]))))){
num=(s[i][1]-'0')*10+s[i][2]-'0';//若有三位则后两位代表移动额距离
}
if((s[i].size()==2)&&(isdigit(s[i][1]))){
num=(s[i][1]-'0');//若有两位则第二位代表移动的距离
}
if(s[i][0]=='A'){//确定坐标移动的方位并改变坐标
x-=num;
}
if(s[i][0]=='D'){
x+=num;
}
if(s[i][0]=='S'){
y-=num;
}
if(s[i][0]=='W'){
y+=num;
}
}
cout<<x<<','<<y<<endl;
return 0;
}
int main(){
string str;
while(cin>>str){
coordinate_movement(str);
}
return 0;
}