某探险队负责对地下洞穴进行探险。探险队成员在进行探险任务时,随身携带的记录器会不定期地记录自身的坐标,但在记录的间隙中也会记录其他数据。探索工作结束后,探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足迹位置。
仪器记录坐标时,坐标的数据格式为(x,y),如(1,2)、(100,200),其中0
若两个座标的相对总部的距离相同,则第一次到达的坐标为最远的足迹。
若记录仪中的坐标都不合法,输出总部坐标(0,0)。
🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Java)真题目录汇总
不需要考虑双层括号嵌套的情况,比如sfsdfsd((1,2))。
字符串,表示记录仪中的数据。
如:
ferga13fdsf3(100,200)f2r3rfasf(300,400)
字符串,表示最远足迹到达的坐标。
如:
(300,400)
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
输出
(5,10)
记录仪中的合法坐标有3个: (3,10), (3,4), (5,10),其中(5,10)是相距总部最远的坐标, 输出(5,10)。
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
asfefaweawfaw(0,1)fe
输出
(0,0)
记录仪中的坐标都不合法,输出总部坐标(0,0)。
本程序主要使用了以下集合和知识点:
package com.hw.od;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** Author: 华为OD联盟(梦想橡皮擦,码莎拉蒂,鸿蒙坚果) Date: 2023/1/6 Time: 19:38 Description:*/public class OdMain {public static void sovle(String inputValue) {int right = 0;int left = 0;List myList = new ArrayList<>();List> allLists = new ArrayList<>();for (int i = 0; i < inputValue.length(); ++i) {if (inputValue.charAt(i) == '(') {left = i + 1;} else if (inputValue.charAt(i) == ')') {right = i;}if (0 != right) {String[] subStr = inputValue.substring(left, right).split(",");int a = Integer.parseInt(subStr[0]);int b = Integer.parseInt(subStr[1]);if (subStr[0].charAt(0) != '0' && subStr[1].charAt(0) != '0' && a > 0 && a < 1000 && b > 0 && b < 1000) {myList.add(a);myList.add(b);allLists.add(myList);myList = new ArrayList<>();}left = right = 0;}}if (allLists.size() != 0) {allLists.sort((i, j) -> {int ax = i.get(0) * i.get(0) + i.get(1) * i.get(1);int bx = j.get(0) * j.get(0) + j.get(1) * j.get(1);if (bx >= ax) {return 1;}return -1;});System.out.println("(" + allLists.get(0).get(0) + "," + allLists.get(0).get(1) + ")");} else {System.out.println("(0,0)");}}public static void main(String[] args) {try {Scanner scan = new Scanner(System.in);String inputValue = scan.nextLine();if (inputValue == null || inputValue.length() < 1) {System.out.println("input error");return;}sovle(inputValue);} catch (Exception e) {e.printStackTrace();System.out.println("input error");}}
}
ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
(5,10)xxxxxxxxxx ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)(5,10)51 2 52
试题来源:华为 OD 联盟整理收集
题解:解题思路 与 代码 为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。
目标:👉 助你解开所有JAVA华为OD机试题
下一篇:TS常见面试题