【华为OJ】【016-坐标移动】
2016-05-06 06:30
302 查看
【华为OJ】【算法总篇章】
【华为OJ】【016-坐标移动】
【工程下载】
题目描述
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。 从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔。 非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。 下面是一个简单的例子 如: A10;S20;W10;D30;X;A1A;B10A11;;A10; 处理过程: 起点(0,0) + A10 = (-10,0) + S20 = (-10,-20) + W10 = (-10,-10) + D30 = (20,-10) + x = 无效 + A1A = 无效 + B10A11 = 无效 + 一个空 不影响 + A10 = (10,-10) 结果 (10, -10)
输入描述
一行字符串
输出描述
最终坐标,以,分隔
输入例子
A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出例子
10,-10
算法实现
import java.util.Scanner; /** * Author: 王俊超 * Date: 2015/12/22 15:24 * All Rights Reserved !!! */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNext()) { String input = scanner.nextLine(); System.out.println(move(input)); } scanner.close(); } private static String move(String input) { String[] steps = input.split(";"); int[] result = new int[2]; for (String step : steps) { move(step, result); } return result[0] + "," + result[1]; } private static void move(String input, int[] result) { if (input.matches("(A|D|W|S)[0-9]{1,2}")) { // 方向 char direction = input.charAt(0); // 步数 int step = Integer.parseInt(input.substring(1)); switch (direction) { case 'A': result[0] -= step; break; case 'D': result[0] += step; break; case 'W': result[1] += step; break; case 'S': result[1] -= step; break; } } } }
相关文章推荐
- python日志记录-logging模块
- 易經大意 241_260
- js,css压缩工具
- UVM的factory机制
- [EverString收录]Dr.Elephant启发式算法指南
- python切片详解
- 多生产者和多消费者等待唤醒
- [leetcode] 316. Remove Duplicate Letters 解题报告
- 作为一个程序,坚持写博客的重要性
- LeetCode 323. Number of Connected Components in an Undirected Graph
- 成为C++高手之轻松理解二进制
- facebook messenger platform指南(完整)
- Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
- Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
- Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
- 动态加载JS(css)文件
- kbmMW实现sql查询(图文并茂)
- JS数组操作大全
- LeetCode 217. Contains Duplicate(检查重复)
- 红米Note LTE刷机记录