题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
//这题主要使用字串substr,然后是字符串按下标访问
#include <bits/stdc++.h>
using namespace std;
int main() {
string str,s1;
int fa=0,len=0,x=0,y=0;
getline(cin,str);
for(int i;i<str.size();i++)
{
if (str[i]==';')
{
s1=str.substr(fa,len);
//cout<<s1<<endl;
fa=i+1;
len=0;
if(s1.size()==3&&(s1[0]=='W'||s1[0]=='A'||s1[0]=='S'||s1[0]=='D'))
{
if('0'<=s1[1]&&'9'>=s1[1]&&'0'<=s1[2]&&'9'>=s1[2])
{
int len=(s1[1]-'0')*10+(s1[2]-'0');
switch (s1[0]) {
case 'W':y+=len;
break;
case 'A':x-=len;
break;
case 'S':y-=len;
break;
case 'D':x+=len;
break;
}
}
}
else if(s1.size()==2&&(s1[0]=='W'||s1[0]=='A'||s1[0]=='S'||s1[0]=='D'))
{
if('0'<=s1[1]&&'9'>=s1[1])
{
int len=(s1[1]-'0');
switch (s1[0]) {
case 'W':y+=len;
break;
case 'A':x-=len;
break;
case 'S':y-=len;
break;
case 'D':x+=len;
break;
}
}
}
}else
len+=1;
}
cout<<x<<','<<y;
}
// 64 位输出请用 printf("%lld")