华为OD机考题HJ17 坐标移动

前言

应广大同学要求,开始以OD机考题作为练习题,看看算法和数据结构掌握情况。有需要练习的可以关注下。

描述

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

数据范围:每组输入的字符串长度满足 1≤𝑛≤10000 1≤n≤10000  ,坐标保证满足 −231≤𝑥,𝑦≤231−1 −231≤x,y≤231−1  ,且数字部分仅含正数

输入描述:

一行字符串

输出描述:

最终坐标,以逗号分隔

输入:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

输出:

10,-10

坐标移动_牛客题霸_牛客网

实现原理

1.设置一个数组长度为2的一元数组,粗放对应的坐标移动的位置。

2.校验数据是否符合规范

3.按移动规则进行坐标计算。

实现代码

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String input=scanner.nextLine();
        int[] res=new int[2];
        String[] inputs=input.split(";");
        for(int i=0;i<inputs.length;i++){
            if(inputs[i].length()<2){
                continue;
            }
            String preFix=inputs[i].substring(0,1);
            String content=inputs[i].substring(1,inputs[i].length());
            boolean isNumeric = content.matches("\\d+");
            if(!isNumeric){
                continue;
            }
            if(preFix.equals("A")){
                res[0]-=Integer.valueOf(content);
            }else if(preFix.equals("S")){
                res[1]-=Integer.valueOf(content);
            }else if(preFix.equals("D")){
                res[0]+=Integer.valueOf(content);
            }else if(preFix.equals("W")){
                res[1]+=Integer.valueOf(content);
            }
        }
        System.out.println(res[0]+","+res[1]);
    }
}

QA1:

  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值