哈希-01-数据分类处理

news2024/9/30 9:05:12

文章目录

  • 1. 题目描述
  • 2. 思路
  • 3. 代码

1. 题目描述

信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。

采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。

数据范围: 1 ≤ I , R ≤ 100 1≤I,R≤100 1I,R100 ,输入的整数大小满足 0 ≤ v a l ≤ 2 31 − 1 0≤val≤2^{31}-1 0val2311

输入描述:
一组输入整数序列 I I I和一组规则整数序列 R R R I I I R R R序列的第一个整数为序列的个数(个数不包含第一个整数);整数范围为0 ~ 2 31 − 1 2^{31}-1 2311,序列个数不限

输出描述:
R R R依次中取出 R < i > R<i> R<i>,对I进行处理,找到满足条件的 I I I

I I I整数对应的数字需要连续包含 R < i > R<i> R<i>对应的数字。比如 R < i > R<i> R<i>为23, I I I为231,那么 I I I包含了 R < i > R<i> R<i>,条件满足 。

R < i > R<i> R<i>从小到大的顺序:

(1) 先输出 R < i > R<i> R<i>
(2) 再输出满足条件的 I I I的个数;
(3) 然后输出满足条件的 I I I I I I序列中的位置索引(从0开始);
(4) 最后再输出 I I I

附加条件:
(1) R < i > R<i> R<i>需要从小到大排序。相同的 R < i > R<i> R<i>只需要输出索引小的以及满足条件的I,索引大的需要过滤掉
(2) 如果没有满足条件的 I I I,对应的 R < i > R<i> R<i>不用输出
(3) 最后需要在输出序列的第一个整数位置记录后续整数序列的个数(不包含“个数”本身)

输入:
15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
5 6 3 6 3 0

输出:
30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786

说明:
将序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)排序去重后,可得0,3,6。
序列I没有包含0的元素。
序列I中包含3的元素有:I[0]的值为123、I[3]的值为453、I[7]的值为3、I[9]的值为453456、I[13]的值为453、I[14]的值为123。
序列I中包含6的元素有:I[1]的值为456、I[2]的值为786、I[4]的值为46、I[8]的值为665、I[9]的值为453456、I[11]的值为456、I[12]的值为786。
最后按题目要求的格式进行输出即可。

说明:
30----后续有30个整数
3----从小到大排序,第一个R为0,但没有满足条件的I,不输出0,而下一个R是3
6— 存在6个包含3的I
0— 123所在的原序号为0
123— 123包含3,满足条件

2. 思路

虽然题目有些长,但本质并不难。抓住核心:
1)R中的数据需要排序、去重,可以使用TreeSet结构。
2)需要对I中的数据判断,是否包含R中的元素,运用String.contains()即可。
3)注意输出的第一个数字是后面跟着的数字的总和,不是I中有多少元素符合条件。

3. 代码

代码1: 利用TreeSet结构可以实现数据去重排序,但是注意如果存储的是String类型的数据,数字26和4,会比较2和4的ASCII码值,导致大小比较错误。因此,TreeSet在运用于排序时,应存Integer类型的数据。如代码1所示,存在用例不通过的情况,在代码2中进行了改进。

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    String s1 = in.nextLine();
    String s2 = in.nextLine();

    String[] split1 = s1.split(" ");
    String[] split2 = s2.split(" ");

    ArrayList<String> I = new ArrayList<>(Arrays.asList(split1).subList(1, split1.length));
    TreeSet<String> R = new TreeSet<>(Arrays.asList(split2).subList(1, split2.length));

    String out = "";
    int sum = 0;
    for (String r : R) {
        int times = 0;
        String s = "";
        for (int i = 0; i < I.size(); i++) {
            if (I.get(i).contains(r)){
                times ++;
                s = s + " " + i + " " + I.get(i);
                sum +=2;
            }
        }
        if (times > 0){
            out = out + " " + r + " " + times + s;
            sum += 2;
        }
    }
    System.out.println(sum + out);

}

在这里插入图片描述

代码2:

public static void method2() {
        Scanner in = new Scanner(System.in);

        while (in.hasNext()){
            int i_size = in.nextInt();
            ArrayList<String> I = new ArrayList<>(i_size);
            for (int i = 0; i < i_size; i++) {
                I.add(String.valueOf(in.nextInt()));
            }
            int r_size = in.nextInt();
            TreeSet<Integer> R = new TreeSet<>();
            for (int i = 0; i < r_size; i++) {
                R.add(in.nextInt());
            }

            String out = "";
            int sum = 0;
            for (int r : R) {
                int times = 0;
                String s = "";
                for (int i = 0; i < I.size(); i++) {
                    if (I.get(i).contains(String.valueOf(r))){
                        times ++;
                        s = s + " " + i + " " + I.get(i);
                        sum +=2;
                    }
                }
                if (times > 0){
                    out = out + " " + r + " " + times + s;
                    sum += 2;
                }
            }
            System.out.println(sum + out);
        }
    }

在这里插入图片描述

另外:如果想进一步减少耗时,可以使用StringBuilder来拼接字符串。

以上为个人学习分享,如有问题,欢迎指出:)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2179235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM+Vue+MySQL的在线视频学习系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网的飞速发展&#xff0c;在线视频学习已成为人们获取知识、提升技能的重要途径。然而&#xff0c;传统的视频学习平台往往存在内容管理不便、用户体验不佳等问题。因此&#xff0c;开发一款基于SSM&#xff08;SpringS…

12、echarts 没有显示折线图

一、问题描述 echarts 没有显示折线图&#xff0c;但是&#xff0c;有数据显示&#xff1a; 看图表展示&#xff0c;y轴数据全部没有显示&#xff0c;直接可以判定是数据结构出问题了。 检查 series.data[] 数据结构&#xff1a; dataList [{"dateStr":"202…

06.C/C++内存管理

在这里C的内存管理相较于C作出了许多升级&#xff0c;下面我们就来了解一下。 1.C/C内存分布 我们先来看一下下面的问题&#xff0c;温习一下C的内存分布 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1…

Web安全 - 跨站点请求伪造CSRF(Cross Site Request Forgery)

文章目录 OWASP 2023 TOP 10CSRF 导图CSRF的基本概念CSRF的工作原理常见CSRF攻击模式CSRF防御策略补充建议应用场景实战防御策略选择1. CSRF Token&#xff08;首选&#xff09;2. SameSite Cookie属性3. 验证Referer和Origin4. 多因素认证 实现方案CSRF Token实现SameSite Coo…

JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)

目录 Dialog对话框 介绍 使用 实际效果 Form表单 介绍 使用 实际效果 Dialog对话框 介绍 Dialog对话框&#xff1a;在保留当前页面状态的情况下&#xff0c;告知用户并承载相关操作。 Dialog 对话框组件可以在保留当前页面信息的状态下弹出一个对话框&#xff0c;并…

初始MYSQL数据库(8)—— JDBC编程

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 目录 JDBC的概念 JDBC的使用 加载驱动包 建立连接 创建 statement 对象 定义并执行SQL语句 处理结果集 关闭资源 SQL注入 …

taobao.item_get_appAPI接口原app数据测试指南

在电商竞争日益激烈的当下&#xff0c;数据成为了商家们争夺市场的重要武器。淘宝&#xff0c;作为中国最大的在线零售平台&#xff0c;其庞大的商品库和用户群体为商家提供了巨大的商机。为了帮助商家更好地了解市场动态&#xff0c;优化库存和营销策略&#xff0c;淘宝推出了…

详细分析CollUtil的基本知识(附Demo)

目录 前言1. 集合交并差2. CRUD3. 常用 前言 java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; CollUtil 是一个工具类&#xff0c;通常用于集合的操作&#xff0c;提供…

用友U8+CRM leadconversion.php SQL注入复现

0x01 产品描述&#xff1a; 用友U8-CRM是企业利用信息技术&#xff0c;是一项商业策略&#xff0c;它通过依据市场细分组织企业资源、培养以客户为中心的经营行为、执行以客户为中心的业务流程等手段来优化企业的客户满意度和获利能力。 0x02 漏洞描述&#xff1a; 用友 U8 CR…

<<迷雾>第5章 从逻辑学到逻辑电路(1)--继电器 示例电路

布尔代数可以用来解释复杂的开关电路 info::操作说明 鼠标单击开关切换开合状态 注: 开关不能全部都合上, 否则会导致模拟器异常 该异常与模拟器把开关和导线当作了零电阻的理想部件有关, 为避免此问题, 可在开关形成的回路上添加一个额外的电阻 另: 异常出现后, 右上方的运行按…

Nagle 算法:优化 TCP 网络中小数据包的传输

1. 前言 在网络通信中&#xff0c;TCP&#xff08;传输控制协议&#xff09;是最常用的协议之一&#xff0c;广泛应用于各种网络应用&#xff0c;如网页浏览、文件传输和在线游戏等。然而&#xff0c;随着互联网的普及&#xff0c;小数据包的频繁传输成为一个不容忽视的问题。…

行为设计模式 -策略设计模式- JAVA

策略设计模式 一 .简介二. 案例2.1 抽象策略&#xff08;Strategy&#xff09;类2.2 具体策略&#xff08;Concrete Strategy&#xff09;类2.3 环境&#xff08;Context&#xff09;类2.4 测试 三. 结论3.1 优缺点3.2 使用场景 前言 这是我在这个网站整理的笔记,有错误的地方请…

Git大框架总结

下面首先是我对于git的一个小总结&#xff0c;主要是大框架 首先是四区&#xff0c;因为大部分你所有的工作都是在这四个区里的实现的&#xff0c;包括要提交一个东西&#xff0c;是先是在工作区修改&#xff0c;后用add添加到暂存区&#xff0c;后提交到本地仓库&#xff0c;当…

文献阅读——电力系统安全域边界通用搜索模型与近似方法

文章标题 DOI&#xff1a;10.13334/j.0258-8013.pcsee.190884 ©2020 Chin.Soc.for Elec.Eng. 4411 文章编号&#xff1a;0258-8013 (2020) 14-4411-19 中图分类号&#xff1a;TM 74 电力系统安全域边界通用搜索模型与近似方法 姜涛&#xff0c;李晓辉&#xff0c;李雪*&a…

十五、存储过程与函数

文章目录 0. 引用1. 存储过程概述1.1 理解1.2 分类 2. 创建存储过程2.1 语法分析 3. 调用存储过程3.1 调用格式3.2 代码举例3.3 如何调试 4. 存储函数的使用4.1 语法分析4.2 调用存储函数4.3 代码举例4.4 对比存储函数和存储过程 5. 存储过程和函数的查看、修改、删除5.1 查看5…

建筑物变化检测算法baseline工程,开箱即用,23年5月测试准确度超越阿里云aiearth

建筑物变化检测算法baseline工程&#xff0c;开箱即用&#xff0c;23年5月测试准确度超越阿里云aiearth 建筑物变化检测算法Baseline工程 项目背景 随着城市化进程的加快&#xff0c;对建筑物的变化进行监测变得尤为重要。这不仅有助于城市管理与规划&#xff0c;还能够为灾害…

LeetCode 热题 100 回顾6

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…

Kubernetes高级功能

资源配额 什么是资源配额 资源配额&#xff0c;通过 ResourceQuota 对象来定义&#xff0c;对每个命名空间的资源消耗总量提供限制。 它可以限制命名空间中某种类型的对象的总数目上限&#xff0c;也可以限制命名空间中的 Pod 可以使用的计算资源的总上限。 资源配额应用 创建的…

C语言中的日志机制:打造全面强大的日志系统

前言 在软件开发中&#xff0c;良好的日志记录机制对于调试、监控程序状态和维护系统的稳定性至关重要。本文将介绍如何在C语言中构建一个全面强大的日志系统&#xff0c;并提供一些示例代码。 1. 日志的基本概念 日志级别&#xff1a;用于分类日志信息的重要性&#xff0c;…

【Spring Boot 入门一】构建你的第一个Spring Boot应用

一、引言 在当今的软件开发领域&#xff0c;Java一直占据着重要的地位。而Spring Boot作为Spring框架的延伸&#xff0c;为Java开发者提供了一种更加便捷、高效的开发方式。它简化了Spring应用的搭建和配置过程&#xff0c;让开发者能够专注于业务逻辑的实现。无论是构建小型的…