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