Leetcode每日一题 1487. 保证文件名唯一

news2025/1/11 11:49:20

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。

 

🌈个人主页:主页链接

🌈算法专栏:专栏链接

     我会一直往里填充内容哒!

🌈LeetCode专栏:专栏链接 

    目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出

🌈代码仓库:Gitee链接

🌈点击关注=收获更多优质内容🌈

考试、项目周终于结束了啊!!!!接下来我会好好更文,准备今年四月蓝桥杯省赛! 

这道题并不难,写这篇题解的目的在于,复习一下部分stl库。

题目:

给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。

由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数 。

返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。

输入:names = ["pes","fifa","gta","pes(2019)"]
输出:["pes","fifa","gta","pes(2019)"]
解释:文件系统将会这样创建文件名:
"pes" --> 之前未分配,仍为 "pes"
"fifa" --> 之前未分配,仍为 "fifa"
"gta" --> 之前未分配,仍为 "gta"
"pes(2019)" --> 之前未分配,仍为 "pes(2019)"
输入:names = ["gta","gta(1)","gta","avalon"]
输出:["gta","gta(1)","gta(2)","avalon"]
解释:文件系统将会这样创建文件名:
"gta" --> 之前未分配,仍为 "gta"
"gta(1)" --> 之前未分配,仍为 "gta(1)"
"gta" --> 文件名被占用,系统为该名称添加后缀 (k),由于 "gta(1)" 也被占用,所以 k = 2 。实际创建的文件名为 "gta(2)" 。
"avalon" --> 之前未分配,仍为 "avalon"
输入:names = ["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece"]
输出:["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece(4)"]
解释:当创建最后一个文件夹时,最小的正有效 k 为 4 ,文件名变为 "onepiece(4)"。

白话讲解:

非常的简单,题目给定一串名字,要做的就是若没有重复的名字,则直接输出,若有,则加入后缀(1)、(2).....直到不重复后输出,但没有双重后缀,例如:a(1).txt重复,则输出a(2).txt而不是a(1)(1).txt .

题解:

不重复则..重复则...,这样一看就很容易想到用hash来做,而我们用unordered_map来做,相比于map,他索引效率更高.

首先定义格式函数,输出规定的字符格式,to_string(k)是将k转成字符表达.

之后遍历题给数组names.每遍历一次,就将其hash值加1,若hash值为1,则说明其是第一次出现,可以直接放到答案容器中.

若不为1,则搜寻hash中此时已经出现了多少次.若已经出现3次:a a(1) a(2),则传入2(为什么要传入k-1呢?因为假设gta gta出现了两次 第二个gta应该命名为gta(1),而不是gta(2))

到格式函数中,判断其返回值在hash中是否出现过,若没出现过则存入答案数组,存入map中

若出现过则继续重复上述步骤.

代码实现:

#include<iostream>
#include<string>
#include<vector>
#include<unordered_map>
using namespace std;
class Solution {
    public:
        string to(string a,int k)
        {return a+='('+to_string(k)+')';}
        vector<string> getFolderNames(vector<string>& names) {
            unordered_map<string, int>map;
            vector<string>ans;
            for(const auto &name:names)
            {
                map[name]++;
                if(map[name]==1)
                {
                    ans.push_back(name);
                }
                else {
                    int k=map[name];
                    while(map[to(name, k-1)])
                    {
                        k++;
                    }
                    ans.push_back(to(name,k-1));
                    map[to(name,k-1)]++;
                }          
            }
            return ans;
        }
    };

完结撒花:

🌈本篇博客的内容【Leetcode每日一题 1487. 保证文件名唯一】已经结束。

🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。

🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。

🌈诸君,山顶见!

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

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

相关文章

网上心理咨询系统的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;高等院校担负着培养高素质人才的使命&#xff0c;高素质人才不仅要有良好的思想道德素质、科学文化素质和身体素质&#xff0c;更要有良好的心理素质。然而随着近年来我国高校的连续扩招以及高额的学费居高不下&#xff0c;当代的大…

工程项目管理软件有哪些?这六款很好用!

工程项目管理软件哪个好用&#xff1f;这六款很不错&#xff01; 在现代社会中&#xff0c;软件已经成为了企业信息化、项目管理等方面必不可少的工具。尤其是对于工程项目管理而言&#xff0c;借助软件进行协同、计划、控制等方面的工作&#xff0c;已经成为了必要的手段。但…

钡铼技术BL302 ARM工控机QT图形化界面开发的实践

QT是一种跨平台的应用程序框架&#xff0c;用于开发图形用户界面(GUI)、网络应用程序和嵌入式应用程序。QT提供了丰富的GUI组件和工具&#xff0c;使开发人员能够轻松地创建专业级别的应用程序。QT使用C编写&#xff0c;支持多种操作系统&#xff0c;包括Windows、Linux、macOS…

tuts4you上lena‘s40个crackme(1)

本来是不打算写文章了&#xff0c;因为懒&#xff0c;想以后通过录屏的形式保存一下自己学的路程。但奈何开学后一直没找到机会&#xff0c;在宿舍也不愿意大吼大叫的讲东西&#xff0c;只好再写写文章了 最近学了一些汇编语言和逆向工程&#xff0c;所以就想通过这40给题目来看…

hashCode 和 equals 的处理

文章目录hashCode 和 equals 的处理1. 阿里巴巴编程规范要求2. equals和hashcode的分析2.1 Object方法2.2 只覆写&#xff08;Override&#xff09;equals带来的问题问题演示问题分析问题处理hashCode 和 equals 的处理 1. 阿里巴巴编程规范要求 2. equals和hashcode的分析 2…

python实战应用讲解-【numpy专题篇】函数(附python示例代码)

NumPy 数学函数 NumPy 包含大量的数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。 三角函数 NumPy 提供了标准的三角函数:sin()、cos()、tan()等 import numpy as npa = np.array([0, 30, 45, 60, 90]) print(不同角度的正弦值:) # 通过乘 pi/180 转化…

园区智慧能源管理系统

实现对园区的用能情况实时、全方位监测&#xff0c;重点设备进行数据自动采集并智能统计、分析&#xff0c;根据需要绘制各种趋势曲线、能源流向图和分析报表。将物联网、大数据与全过程能源管理相融合&#xff0c;提供全生命周期的数字化用能服务&#xff0c;实现用能的精细化…

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮

导入elasticsearch依赖在pom.xml里加入如下依赖&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>非常重要&#xff1a;检查依赖版本…

邮件发送,正文内容格式h5,模板字符串拼接使用及赋值,原生js

一、邮件发送 需求不难&#xff0c;传指定的参数给后端&#xff0c;调接口就直接发送了 就是参数里有个正文部分&#xff0c;一定要用h5写 写vue写习惯了&#xff0c;原生的都快忘光了&#xff0c;走了些弯路 二、h5 在页面上有个邮件发送的按钮&#xff0c;点击按钮打开弹窗…

10分钟搞定win11安卓子系统

10分钟搞定win11安卓子系统Android子系统的要求一、安装 Windows 虚拟化支持二、Win11 正式版安装安卓子系统方法教程 (离线包安装)三、在Win11 安卓子系统安装 APK 软件包教程Windows 11 WSA 安装 APK 方法&#xff1a;Windows 11上成功运行安卓APP安装国内的 Android 应用商店…

windows系统无法保存文件的解决方案

❤关注我&#xff0c;不迷路❤ 点击进入PC常见故障汇总专栏 近期收到部分反馈&#xff0c;在windows的电脑上保存一个文件的时候&#xff08;另存为&#xff09;&#xff0c;选择完目标文件夹后无法保存&#xff0c;点击系统的保存按钮&#xff08;有些系统展示为打开按钮&…

2023最新谷粒商城笔记之订单服务篇(全文总共13万字,超详细)

订单服务 页面环境搭建 配置动静环境 在服务器的mydata/nginx/html/static 路径下创建一个 order 文件夹&#xff0c;在order路径下分别创建以下几个文件夹&#xff0c;用来存放对应的静态资源 detail 文件夹下存放 等待付款的静态资源&#xff0c; 并将等待付款文件夹下的页…

DC-4 靶场学习

信息搜集&#xff1a; 首先获取靶场ip&#xff0c;和之前一样。 arp-scan -l nmap -sP 192.168.28.0/24然后访问。 发现需要登录。 漏洞分析: 直接用bp爆破&#xff0c;爆破出来密码为happy&#xff0c;登录。 发现执行了命令&#xff0c;抓包。 修改命令可以执行&#xff…

客户案例|FPGA研发管理解决方案:UniPro瀑布+敏捷 打造高效能组织

2023开年以来&#xff0c;新享科技项目管理软件UniPro收获一波客户侧的点赞好评。在过去一年中&#xff0c;UniPro不断与客户保持高频沟通&#xff0c;满足客户需求为出发点&#xff0c;以产品功能实现为落脚点&#xff0c;不断打磨产品。 以UniPro客户京微齐力为例&#xff0…

Vulnhub靶场----9、DC-9

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-9下载地址&#xff1a;https://download.vulnhub.com/dc/DC-9.zip kali&#xff1a;192.168.144.148 DC-9&#xff1a;192.168.144.158 二、渗透流程 1、信息收集nmap -T5 -A -p- -sV -sT 192.168.144.158思路&am…

IDEA Android 网格布局(GridLayout)示例(计算器界面布局)

网格布局(GridLayout&#xff09; 示例程序效果&#xff08;实现类似vivo手机自带计算器UI&#xff09; 真机和模拟器运行效果&#xff1a; 简述&#xff1a; GridLayout(网格布局)和TableLayout&#xff08;表格布局&#xff09;有类似的地方&#xff0c;通俗来讲可以理解为…

搜广推 Product-based Neural Networks (PNN) - 改进特征交叉的方式

😄 PNN:2016年上海交通大学提出。 文章目录 1、PNN1.1、原理1.2、创新点:product层1.3、product层z部分的输出:l~z~ 的计算方式:1.4、product层z部分的输出:l~p~ 的计算方式:1.4.1、IPNN1.4.2、OPNN1.5、优点1.6、缺点Reference1、PNN PNN:Product-based Neural Netwo…

Spark 故障排除

1 故障排除一&#xff1a;控制reduce端缓冲大小以避免OOM 在Shuffle过程&#xff0c;reduce端task并不是等到map端task将其数据全部写入磁盘后再去拉取&#xff0c;而是map端写一点数据&#xff0c;reduce端task就会拉取一小部分数据&#xff0c;然后立即进行后面的聚合、算子…

colletions学习和链式调用,以及优雅的展示代码

1&#xff0c;python 中尽量减少缩进可以直接 if code ! 1: return {msg:2003} 继续写下面的逻辑 2&#xff0c;关于&#xff08;1&#xff09;&#xff0c;&#xff08;1&#xff0c;&#xff09;区别 &#xff08;1&#xff09;表示直接计算运行 &#xff08;1*2*345&a…

Leetcode.2359 找到离给定两个节点最近的节点

题目链接 Leetcode.2359 找到离给定两个节点最近的节点 Rating &#xff1a; 1715 题目描述 给你一个 n个节点的 有向图 &#xff0c;节点编号为 0到 n - 1&#xff0c;每个节点 至多 有一条出边。 有向图用大小为 n下标从 0开始的数组 edges表示&#xff0c;表示节点 i有一条…