Java 开发

本文深入探讨了使用Java实现的一种数据分类算法,该算法能够处理整数序列,通过过滤重复项并排序,然后对另一数组进行查找和分类,最终输出分类结果。文章详细介绍了算法的实现过程,包括数据读取、处理和输出。

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

import java.util.*; /** * Declaration: 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()) { // 整数序列I int iNum = scanner.nextInt(); int[] iArr = new int[iNum]; for (int i = 0; i < iNum; i++) { iArr[i] = scanner.nextInt(); } // 规则整数序列R,过滤掉了重复数字,并且按从小到大进行了排序 int rNum = scanner.nextInt(); SortedSet<Integer> rSet = new TreeSet<>(); for (int i = 0; i < rNum; i++) { rSet.add(scanner.nextInt()); } System.out.println(dataClassify(rSet, iArr)); } scanner.close(); } /** * 将rSet中的数据进行分类 * * @param rSet 数据已经按从小到大进行了排序 * @param iArr 待查找的数组 * @return 查找结果 */ private static String dataClassify(SortedSet<Integer> rSet, int[] iArr) { List<Integer> result = new LinkedList<>(); for (int r : rSet) { dataClassify(r, iArr, result); } StringBuilder builder = new StringBuilder(); builder.append(result.size()).append(' '); for (int i : result) { builder.append(i).append(' '); } return builder.substring(0, builder.length() - 1); } /** * 找数组iArr中包含r的下标和数字 * * @param r 待匹配的数字 * @param iArr 查找的数组 * @param result 查找的结果。保存所有的结果 */ private static void dataClassify(int r, int[] iArr, List<Integer> result) { // 保存结果的对象 List<Integer> temp = new LinkedList<>(); for (int i = 0; i < iArr.length; i++) { // 找到匹配的就将下标和值添加到结果中 if (check(r, iArr[i])) { temp.add(i); temp.add(iArr[i]); } } // 如果找到数字 if (!temp.isEmpty()) { result.add(r); result.add(temp.size() / 2); result.addAll(temp); } } /** * 判断r中是否包含j * * @param r 要包含的数字 * @param i 待匹配的数字 * @return 匹配结果 */ private static boolean check(int r, int i) { return ("" + i).contains("" + r); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迅捷的软件产品制作专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值