2024 ccfcsp认证打卡 2023 05 01 重复局面

news2024/11/23 21:30:06

2023 05 01 重复局面

  • 题目
  • 题解1
  • 题解2
  • 区别:
    • 数据存储方式:
    • 时间复杂度:
    • 空间复杂度:
  • 总结:

题目

在这里插入图片描述
在这里插入图片描述

题解1

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();  // 输入n,表示字符串数量

        HashMap<String, Integer> strs = new HashMap<>();  // 创建一个HashMap,用于存储字符串及其出现次数

        for (int i = 0; i < n; i++) {
            String str = "";  // 初始化空字符串用于存储当前输入的字符串

            // 依次输入8个字符串,并拼接成一个完整的字符串
            for (int j = 0; j < 8; j++) {
                String s = input.next();
                str += s;
            }

            if (i == 0) {
                // 如果是第一个字符串,直接输出1,并将该字符串放入HashMap中
                System.out.println(1);
                strs.put(str, 1);
            } else {
                if (strs.containsKey(str)) {
                    // 如果HashMap中已存在该字符串,更新其出现次数
                    strs.put(str, strs.get(str) + 1);
                } else {
                    // 如果HashMap中不存在该字符串,将其放入HashMap,并设置出现次数为1
                    strs.put(str, 1);
                }
                // 输出该字符串出现的次数
                System.out.println(strs.get(str));
            }
        }
    }
}

题解2

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();  // 输入n,表示字符串数量
        String res[] = new String[n];  // 用于存储输入的字符串
        int j = -1, count = 1;

        // 获取输入
        for (int i = 0; i < 8 * n; i++) {
            if (i % 8 == 0) {
                j++;  // 每8个字符换行存储到res数组中
            }
            res[j] += sc.next();  // 读取下一个字符串,并拼接到对应位置
        }
        System.out.println(1);  // 第一个字符串输出1,因为第一个肯定是唯一的
        j = 0;
        
        // 判断输出
        for (int i = 1; i < n; i++) {
            for (j = 0; j < i; j++) {
                if (res[i].equals(res[j])) {
                    count++;  // 如果与之前的字符串相同,计数加1
                }
            }
            System.out.println(count);  // 输出该字符串出现的次数
            count = 1;  // 重置计数器为1,准备下一个字符串的判断
        }
    }
}

区别:

数据存储方式:

题解1中使用了HashMap,将每个字符串作为键,出现次数作为值,实现了O(1)时间复杂度的查找和更新。
题解2中使用了一个String数组,每个位置存储一个字符串,通过比较字符串的方式来统计出现次数。这样的方法比较低效,因为每次查找都需要遍历整个数组。

时间复杂度:

题解1中使用HashMap,查找和更新的时间复杂度都是O(1),因此整体时间复杂度是O(n)。
题解2中使用了两个嵌套的循环来比较字符串,时间复杂度为O(n^2),效率较低。

空间复杂度:

题解1中HashMap的空间复杂度取决于不同的字符串数量,最坏情况下是O(n)。
题解2中使用了一个String数组,空间复杂度也取决于不同的字符串数量,最坏情况下也是O(n)。

总结:

题解1使用HashMap的方式更加高效,可以快速统计每个字符串出现的次数,而且代码相对简洁。
题解2虽然实现了相同的功能,但由于字符串比较的方式导致时间复杂度高,适用于数据量较小的情况。

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

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

相关文章

vivado eFUSE 寄存器访问和编程

eFUSE 寄存器访问和编程 注释 &#xff1a; 在 MPSoC 和 Versal 器件上不支持以下 eFUSE 访问和编程方法。 7 系列、 UltraScale 和 UltraScale 器件具有一次性可编程位用于执行特定功能 &#xff0c; 称为 eFUSE 位。不同 eFUSE 位类型如 下所述&#xff1a; • …

利用Winform实现简陋版的温度计(仅供参考)

本人水平有限&#xff0c;如有写得不对的地方&#xff0c;望指正。为了简单化&#xff0c;做了一个简陋版的温度计控件&#xff0c;有点丑哈。本文的内容仅供参考 测试环境&#xff1a; visual studio 2017 .net framework 4.0 效果图如下&#xff1a; 步骤如下&#xff1a;…

SpringBoot 微服务项目,打包报错:找不到符号

错误定位到这个代码&#xff0c;调试、编译都正常&#xff0c;就打包报错 最后发现&#xff0c;这个类是其他项目里的&#xff0c;需要重新生成其他项目后&#xff0c;再来打包就行了。

dhcp中继代理

不同过路由器分配ip了&#xff0c;通过一台服务器来代替&#xff0c;路由器充当中继代理功能&#xff0c;如下图 服务器地址&#xff1a;172.10.1.1/24 配置流程&#xff1a; 1.使能dhcp功能 2.各个接口网关地址&#xff0c;配置dhcp中继功能 dhcp select relay &#xff0…

ansible-自动化工具

一、ansible概述 不是C/S架构&#xff0c;就是一种工具 1&#xff1a;linux自动化运维 编写程序实现运维自动化&#xff1a;shell python 工具模式自动化&#xff1a; ①OS Provisioning&#xff1a; RedHat satellite&#xff1b;PXE&#xff08;可实现dhcp和tftp&#…

基于深度学习的吸烟检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的吸烟行为检测系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及…

HDLbits 刷题 --Conditional

学习: Verilog has a ternary conditional operator ( ? : ) much like C: (condition ? if_true : if_false) This can be used to choose one of two values based on condition (a mux!) on one line, without using an if-then inside a combinational always block. …

MyBatis强大的动态Sql功能

1.动态不定增加 根据需求 , 动态的拼接SQL 。 用户有的信息是必须输入&#xff0c;但有的不是必须进行输入 比如在填写注册信息的时候&#xff0c;有时候密码是一定要填写的&#xff0c;而银行卡号不是必须填写的 1)注解方式 测试类中 &#xff1a; 使用 if 标签 可以实现动…

SAP 销售订单BOM使用场景简介

SAP系统中通常会存在很多的BOM类型,有生产订单BOM、销售订单BOM、WBSBOM、标准BOM这几类。 订单BOM >= 销售BOM >= 标准BOM 订单BOM:通常是根据标准BOM基础上由PMC去调整一个物料的用量等,根据生产订单的BOM 销售BOM:根据销售订单号+行项目号创建的BOM,是根据特定…

定时器与晶振时钟、中断系统、定时中断

定时器 简介&#xff1a; C51中的定时器和计数器是同一个硬件电路支持的&#xff0c;通过寄存器配置不同&#xff0c;就可以将他当做定时器 或者计数器使用。 确切的说&#xff0c;定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时&#xff0…

一维数组oj练习(4)

又是一维数组的练习.... 小A的学号在数组中可以看成a[k]&#xff0c;在判断谁大于a[k]。大于的数用sum来统计&#xff0c;最后输出。 #include<cstdio> int a[10010],n,k,sum; int main(){scanf("%d %d",&n,&k);for(int i1;i<n;i){scanf("%d…

uniapp开发安卓跟ios所遇问题集合

Android平台配置CPU类型 一般勾选armeabi-v7a跟arm64-v8a就好了 armeabi-v7a 第7代及以上的ARM处理器&#xff08;ARM32位&#xff09;&#xff0c;市面上大多数手机使用此CPU类型。arm64-v8a 第8代、64位ARM处理器&#xff08;ARM64位&#xff09;&#xff0c;最近两年新发的…

实现顺序表的增删查改

现在让我们探索数据结构这个美妙的世界吧&#xff01; 概念介绍 线性表是具有相同特性的数据元素的有限序列。线性表是一种在实际运用中广泛运用的线性结构&#xff0c;如线性表&#xff0c;栈&#xff0c;队列&#xff0c;字符串等。 顺序表的本质是数组&#xff0c;实现了…

微信小程序使用icon图标

原因&#xff1a; 微信小程序使用fontawesome库使用icon图标&#xff0c;网上有很多教程&#xff0c;按照网上说法制作&#xff0c;引入到微信小程序中&#xff0c;但是验证成功&#xff0c;只能使用部分图标&#xff0c;结果不尽如人意。后面使用阿里巴巴开源iconfont来使用ic…

DBU-Net:用于乳腺超声图像中肿瘤分割的双分支U形网络

DBU-Net&#xff1a;用于乳腺超声图像中肿瘤分割的双分支U形网络 摘要引言材料和方法概述所提出的方法 DBU-Net Dual branch U-Net for tumor segmentation in breast ultrasound images 摘要 乳腺超声医学图像通常具有低成像质量沿着不清楚的目标边界。这些问题使得医生在诊断…

VSCode调试C++

1、环境准备 1.1、g的安装与使用 1.1.1、安装 方式一&#xff1a;Xcode安装 苹果的开发集成工具是Xcode.app&#xff0c;其中包含一堆命令行工具。 在 App store 可以看到其大小有好几个G&#xff0c;有点大。 方式二&#xff1a;Command Line Tools 安装 Command Line Too…

Ai音乐大师演示(支持H5、小程序)独立部署源码

Ai音乐大师演示&#xff08;支持H5、小程序&#xff09;独立部署源码

【开发问题】为什么Java写文件时文件名中带有“*”会写入失败呢?

前言&#xff1a;在开发过程中&#xff0c;可能会遇写文件的问题。当我们写文件时&#xff0c;文件名中可能会带“*”号。这时候可能会导致写文件失败。 比如有一段写文件的代码&#xff1a; public static void createFile(String filename, byte[] content) {FileOutputStr…

蓝桥杯刷题-四平方和

四平方和 代码&#xff1a; from copy import deepcopy n int(input()) maxn int(5e6) 10 dic dict() for a in range(maxn):if a * a > n:breakfor b in range(a,maxn):if a * a b * b > n:breakif dic.get(a*ab*b) is None:dic[a*ab*b] (a,b) ans [maxn for _ …

情感视频素材在哪找?8个视频素材大全网站

在追求创意表达的道路上&#xff0c;每一位视频创作者都是一名勇敢的探险家&#xff0c;不断寻找那些能够点亮作品、让故事生动起来的珍贵资源。无论你的目标是打动人心、传达信息&#xff0c;还是简单地分享生活&#xff0c;以下八个视频素材网站将为你的每一个项目提供无尽的…