前言

应广大同学要求,开始以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:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部