Leetcode每日一题 1487. 保证文件名唯一
创始人
2024-05-28 09:07:45
0

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
#include
#include
#include
using namespace std;
class Solution {public:string to(string a,int k){return a+='('+to_string(k)+')';}vector getFolderNames(vector& names) {unordered_mapmap;vectorans;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. 保证文件名唯一】已经结束。

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

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

🌈诸君,山顶见!

相关内容

热门资讯

小学六年级暑假作文700字(... 小学六年级暑假作文700字 篇一:我与暑假的约定暑假终于来临了,这是我最期待的时刻。为了让暑假过得更...
我的好伙伴作文500字六年级... 篇一:我的好伙伴我有一个非常好的伙伴,他的名字叫小明。小明是我班上的同学,我们从小学一年级就开始一起...
生活中不是缺少美,而是缺少发... 生活中不是缺少美,而是缺少发现六年级作文 篇一生活中不是缺少美,而是缺少发现生活中的美是无处不在的,...
去北京旅作文450六年级57... 篇一:我的北京之旅我终于等到了期盼已久的暑假,爸爸妈妈带我去了北京旅游,这是我人生中的第一次北京之旅...
六年级毕业作文(实用6篇) 六年级毕业作文 篇一:我的小学生活六年级毕业作文 篇二:成长的足迹六年级毕业作文 篇一:我的小学生活...
让生活更美好作文500字六年... 让生活更美好作文500字六年级 篇一生活,是我们每个人都要面对的,无论是喜是忧,都离不开生活。那么,...
感动小学六年级作文300字(... 感动小学六年级作文300字 篇一:爱心传递的故事这是一个关于爱心传递的故事。有一天,我放学后回家的路...
六年级下册语文第二单元作文5... 六年级下册语文第二单元作文500字 篇一我最喜欢的节日我最喜欢的节日是春节。春节是中国最重要的传统节...
精彩的生活六年级作文(通用3... 精彩的生活六年级作文 篇一快乐的学习生活我是一个六年级的学生,我的生活非常精彩。每天早上,当我听到闹...
什么让生活更美好作文600字... 篇一:什么让生活更美好生活是一幅绚丽多彩的画卷,我们每个人都希望能够过上美好的生活。那么,什么让生活...
暑假去海边玩作文600六年级... 暑假去海边玩作文600六年级 篇一我开心的暑假海边之旅暑假终于到了,我迫不及待地和家人一起去海边度假...
烟花大会六年级作文【优秀3篇... 烟花大会六年级作文 篇一:烟花大会的美丽夜晚烟花大会是我最期待的一个活动,每年一次的盛大烟花表演总能...
变形记六年级作文(实用6篇) 变形记六年级作文 篇一我的变形记之旅我是一个普通的小学六年级学生,最近我读了一本引人入胜的小说《变形...
我是小农夫小学六年级记叙文(... 我是小农夫小学六年级记叙文 篇一我是小农夫我是一个小农夫,今年上小学六年级。在我家乡的小村庄里,大家...
采茶姑娘六年级作文【实用5篇... 采茶姑娘六年级作文 篇一茶园里的孩子们我家住在一个美丽的小山村,村子周围都是茶园。每年的春天,当茶叶...
我的假期生活六年级作文【优秀... 我的假期生活六年级作文 篇一我喜欢的假期活动假期对于学生来说,是一段宝贵的时间。在假期里,我可以尽情...
地球的自述六年级作文500字... 篇一:地球的自述你好,我是地球,这是我第一次向你们自述。作为宇宙中唯一一个有生命存在的行星,我感到非...
泪作文600字六年级(优秀6... 泪作文600字六年级 篇一:泪水中的勇敢泪水是我们内心的一种表达,它可以是喜悦的泪水,也可以是悲伤的...
六年级上册第一单元作文500... 六年级上册第一单元作文500字 篇一我的暑假生活暑假到了,我迫不及待地开始了我的暑假生活。这个暑假,...
小动物三年级作文300字【经... 小动物三年级作文300字 篇一我喜欢小动物我是一个小动物爱好者,我喜欢各种各样的小动物。我觉得它们都...