题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

#include <bits/stdc++>
using namespace std;

int main() 
{
    //initialize
	string str;
	int x = 0, y = 0;

	cin >> str;
	while (true)
	{
		//initialize
		int i = 0,Lon = 0;
		string mov;
		string len;
		
		//break
		if ( str.find(';') == str.npos )
		{
			break;
		}

		i = str.find(';');
		mov = str.substr(0, i);					//移动指令获取
		len = str.substr(1, (i - 1));			//位移量获取
		Lon = str.length() - (i + 1);			//移动指令长度

		if ( mov.length() == 2 && mov.at(1) >= '0' && mov.at(1) <= '9' || mov.length() == 3 && mov.at(1) >= '0' && mov.at(1) <= '9' && mov.at(2) >= '0' && mov.at(2) <= '9')
		{
			switch ( mov.at(0) )
			{
				case 'A': x = x - stoi(len); break;
				case 'D': x = x + stoi(len); break;
				case 'S': y = y - stoi(len); break;
				case 'W': y = y + stoi(len); break;
				default:break;
			}
		}
		
		str = str.substr((i+1), Lon);			//下一条指令
	}
	cout << x << ',' << y << endl;				//输出
    
}

全部评论

相关推荐

10-29 18:20
济南大学 Java
王233:名字说一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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