题解 | #坐标移动#
坐标移动
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")

