题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream>
#include <string>
#include<vector>
using namespace std;
vector<string> split(string s, char c)
{
vector<string> res;
int len = s.size();
int i = 0, sublen = 0;
while(i < len)
{
if(s[i] != ';') sublen++;
else
{
if(sublen != 0)
{
res.push_back(s.substr(i - sublen, sublen) );
// cout << s.substr(i - sublen, sublen) << endl;
}
sublen = 0;
}
i++;
}
return res;
}
int main() {
int x = 0, y = 0;
string s;
cin >> s;
vector<string> strs = split(s, ';');
for(int i = 0; i < strs.size(); ++i)
{
if(strs[i].size() == 0) break;
int num = 0; // 先把num算出来
if(strs[i].size() == 3 && strs[i][1] >= '0' && strs[i][1] <= '9' && strs[i][2] >= '0' && strs[i][2] <= '9')
num = stoi(strs[i].substr(1,2));
if(strs[i].size() == 2 && strs[i][1] >= '0' && strs[i][1] <= '9')
num = stoi(strs[i].substr(1,1));
if(strs[i].size() == 1) num = 0;
switch(strs[i][0])
{
case 'W': y += num; break; // 这个特别要注意!!!
case 'D': x += num; break;
case 'S': y -= num; break;
case 'A': x -= num; break;
default: break;
}
}
cout << x << "," << y;
}
// 64 位输出请用 printf("%lld")

