题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream> using namespace std; int main() { string s; int x = 0, y = 0; while (getline(cin, s, ';')) { if (s.empty())continue; int len = s.size(); if (len == 2 && s[0] == 'A' && isdigit(s[1]))x -= s[1] -'0'; if (len == 2 && s[0] == 'D' && isdigit(s[1]))x += s[1] -'0'; if (len == 2 && s[0] == 'W' && isdigit(s[1]))y += s[1] -'0'; if (len == 2 && s[0] == 'S' && isdigit(s[1]))y -= s[1] -'0'; if (len == 3 && s[0] == 'A' && isdigit(s[1]) && isdigit(s[2]))x -= stoi(s.substr(1)); if (len == 3 && s[0] == 'D' && isdigit(s[1]) && isdigit(s[2]))x += stoi(s.substr(1)); if (len == 3 && s[0] == 'W' && isdigit(s[1]) && isdigit(s[2]))y += stoi(s.substr(1)); if (len == 3 && s[0] == 'S' && isdigit(s[1]) && isdigit(s[2]))y -= stoi(s.substr(1)); } cout << x << ',' << y << endl; } // int main() { // string s; // getline(cin, s); // int x = 0, y = 0; // //[j,i) // for (int i = 0; i < s.size(); ++i) { // string str = "";//存放待处理的字符串 // int strlen = 0;//存放待处理的字符串长度 // if (s[i] != ';' ) strlen++; // //只有遇到;操处理字符 // else if (s[i] == ';') { // str = s.substr(0, i);//待处理的字符串 // s = s.substr(i + 1);//剩下的字符 // //判断str中的字符是否有效 // if (str[0] == 'A' || str[0] == 'D' || str[0] == 'W' || str[0] == 'S') { // for (int j = 1; i < str.size(); ++j) { // if (!isdigit(s[j])) break; // } // } else { // break;//str中存在非法字符 // } // //有效 // int num = stoi(str.substr(1)); // //for循环处理str // if (str[0] == 'A') x -= num; //10进制字符串转十进制数字 // else if (str[0] == 'D') x += num; // else if (str[0] == 'W') y += num; // else if (str[0] == 'S') y -= num; // } // } // cout << x << ',' << y << endl; // } // 64 位输出请用 printf("%lld")