java最远足迹坐标点搜索

博客围绕探险队获取成员探险中相对总部最远足迹位置的问题展开。介绍了坐标数据格式、合法范围,设定了距离计算方式及最远坐标判定规则。给出输入输出描述和用例,并提及使用Java实现该功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java最远足迹坐标点搜索


描述

某探险队负责对地下洞穴进行探险。探险队成员在进行探险任务时,随身携带的记录器会不定期地记录自身的坐标,但在记录的间隙中也会记录其他数据。探索工作结束后,探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足迹位置。

1.仪器记录坐标时,坐标的数据格式为(x,y),如(1,2)、(100,200),其中0<x<1000,0<y<1000。同时存在非法坐标,如(01,1)、(1.01),(0.100)属于非法坐标。
2.设定探险队总部的坐标为(0,0),某位置相对总部的距离为:x“x+y"y。
3.若两个座标的相对总部的距离相同,则第一次到达的坐标为最远的足迹。
4.若记录仪中的坐标都不合法,输出总部坐标(0.0)。

备注:
不需要考虑双层括号嵌套的情况,比如sfsdfsd((1,2))。

输入描述:
字符串,表示记录仪中的数据。
如:ferga13fdsf3(100,200)f2r3rfasf(300,400)。

输出描述:
字符串,表示最远足迹到达的坐标。
如 :(300,400)。

用例:
输入:
ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)f2r3rfasf(10,5)

输出:
(5,10)

java实现

package com.des.data.test;

import java.util.HashMap;

public class FarthestFootprint {

    public static void main(String[] args) {
        String str = "ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)f2r3rfasf(10,5)";
        System.out.println(farthest(str));
    }

    public static String farthest(String str) {
        int f = 0;
        HashMap<Integer, String> resMap = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            StringBuffer strl = new StringBuffer();
            if (c == '(') {
                strl.append(c);
                StringBuffer strLen = new StringBuffer();
                for (int j = i + 1; j < str.length(); j++) {
                    char d = str.charAt(j);
                    strl.append(d);
                    if (d == ')') {
                        break;
                    }
                    strLen.append(d);
                }
                String[] trslen = strLen.toString().split(",");
                String s = trslen[0];
                String e = trslen[1];
                int si = Integer.parseInt(s);
                int el = Integer.parseInt(e);
                if (!s.startsWith("0") && si > 0 && el < 1000 && !e.startsWith("0")) {
                    int resl = si * si + el * el;
                    if (resl > f) {//这一步可以找到相同距离下最先搜索到的那个点
                        f = resl;
                        resMap.put(f,strl.toString());
                    }
                }
            }
        }
        return resMap.get(f);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值