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

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

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. 保证文件名唯一】已经结束。


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


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


🌈诸君,山顶见!

目录
相关文章
|
8月前
|
传感器 程序员 Go
一文彻底搞清楚常见的IC封装
本文介绍了常见的IC封装类型,包括DIP、SOP、QFP、BGA、CSP等,详细解释了它们的特点、应用及选型参考,帮助读者理解封装技术的发展趋势与核心功能。
1802 0
一文彻底搞清楚常见的IC封装
|
12月前
|
运维 API 计算机视觉
深度解密协程锁、信号量以及线程锁的实现原理
深度解密协程锁、信号量以及线程锁的实现原理
180 2
|
12月前
|
缓存 运维 Docker
容器化运维:Docker Desktop 占用磁盘空间过大?教你轻松解决!
Windows Docker Desktop 使用过程中,因镜像、容器数据及构建缓存的累积,可能导致磁盘空间占用过高。通过删除无用镜像与容器、压缩磁盘以及清理构建缓存等方法,可有效释放空间。具体步骤包括关闭WSL、使用`diskpart`工具压缩虚拟磁盘、执行`docker buildx prune -f`清理缓存等。这些操作能显著减少磁盘占用,提升系统性能。
2847 4
|
自然语言处理 数据处理 调度
《Havenask分布式索引构建服务--Build Service》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask分布式索引构建服务——Build Service,主打稳定、快速、易管理,是在线系统提升竞争力的一大利器。
102129 3
《Havenask分布式索引构建服务--Build Service》
vscode 如何修改c/c++格式化风格,大括号不换行
vscode 如何修改c/c++格式化风格,大括号不换行
|
NoSQL Linux
centos 7 源代码安装新版本gdb
centos 7 源代码安装新版本gdb
404 0
|
机器学习/深度学习 存储 人工智能
比Faiss更胜一筹?达摩院自主研发的向量检索引擎Proxima首次公开!
淘宝搜索推荐、视频搜索背后使用了什么样的检索技术?非结构化数据检索,向量检索,以及多模态检索,它们到底解决了什么问题?今天由阿里达摩院的科学家从业务问题出发,抽丝剥茧,深度揭秘达摩院内部技术,向量检索引擎 Proxima,以及相关领域的现状、挑战和未来。
3946 0
比Faiss更胜一筹?达摩院自主研发的向量检索引擎Proxima首次公开!
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
24658 64
图解一致性哈希算法,看这一篇就够了!
|
测试技术 C++
c++优先队列priority_queue(自定义比较函数)
c++优先队列priority_queue(自定义比较函数)
1279 0
|
运维 搜索推荐 调度
Ha3搜索引擎简介
Ha3是阿里巴巴搜索团队开发的搜索引擎平台,它为阿里集团包括淘宝、天猫在内的核心业务提供搜索服务支持。
23938 1