题解 | #坐标移动#

坐标移动

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")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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