1. 题目

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

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

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

示例 1:
输入:names = ["pes","fifa","gta","pes(2019)"]
输出:["pes","fifa","gta","pes(2019)"]
解释:文件系统将会这样创建文件名:
"pes" --> 之前未分配,仍为 "pes"
"fifa" --> 之前未分配,仍为 "fifa"
"gta" --> 之前未分配,仍为 "gta"
"pes(2019)" --> 之前未分配,仍为 "pes(2019)"示例 2:
输入: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"示例 3:
输入:names = ["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece"]
输出:["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece(4)"]
解释:当创建最后一个文件夹时,最小的正有效 k 为 4 ,文件名变为 "onepiece(4)"。示例 4:
输入:names = ["wano","wano","wano","wano"]
输出:["wano","wano(1)","wano(2)","wano(3)"]
解释:每次创建文件夹 "wano" 时,只需增加后缀中 k 的值即可。示例 5:
输入:names = ["kaido","kaido(1)","kaido","kaido(1)"]
输出:["kaido","kaido(1)","kaido(2)","kaido(1)(1)"]
解释:注意,如果含后缀文件名被占用,那么系统也会按规则在名称后添加新的后缀 (k) 。提示:
1 <= names.length <= 5 * 10^4
1 <= names[i].length <= 20
names[i] 由小写英文字母、数字和/或圆括号组成。

2. 解题

class Solution { //C++
public:vector<string> getFolderNames(vector<string>& names) {unordered_map<string,int> m;vector<string> ans(names.size());int num;for(int i = 0; i < names.size(); ++i){if(!m.count(names[i]))//没有出现过{m[names[i]]++;//计数+1ans[i] = names[i];//答案不变}else{  //出现过该单词num = m[names[i]];//读取当前应该的计数while(m.count(names[i]+"("+to_string(num)+")"))//出现过了num++;//数字增加,直到没有出现过ans[i] = names[i]+"("+to_string(num)+")";//写入答案m[names[i]] = num+1;//更新计数m[ans[i]]++;}}return ans;}
};
class Solution:# py3def getFolderNames(self, names: List[str]) -> List[str]:m = {}ans = [""]*len(names)for i in range(len(names)):if names[i] not in m:m[names[i]] = 1ans[i] = names[i]else:num = m[names[i]]while names[i]+'('+str(num)+')' in m:num += 1ans[i] = names[i]+'('+str(num)+')'m[names[i]] = num+1m[ans[i]] = 1return ans

LeetCode 1487. 保证文件名唯一(哈希map)相关推荐

  1. leetcode1487. 保证文件名唯一

    给你一个长度为 n 的字符串数组 names .你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹. 由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使 ...

  2. LeetCode 1166. 设计文件系统(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联 ...

  3. LeetCode 205. 同构字符串(哈希map)

    1. 题目 给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序. 两个字符 ...

  4. LeetCode 1429. 第一个唯一数字(map+queue)

    文章目录 1. 题目 2. 解题 1. 题目 给定一系列整数,插入一个队列中,找出队列中第一个唯一整数. 实现 FirstUnique 类: FirstUnique(int[] nums) 用数组里的 ...

  5. LeetCode 1146. 快照数组(哈希map + 有序map)

    文章目录 1. 题目 2. 解题 1. 题目 实现支持下列接口的「快照数组」- SnapshotArray: SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 ...

  6. LeetCode 1181. 前后拼接(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个「短语」列表 phrases,请你帮忙按规则生成拼接后的「新短语」列表. 「短语」(phrase)是仅由小写英文字母和空格组成的字符串.「短语」的 ...

  7. LeetCode 359. 日志速率限制器(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个日志系统,可以流式接收日志以及它的时间戳. 该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过. 给你 ...

  8. LeetCode 336. 回文对(哈希map/Trie树)

    文章目录 1. 题目 2. 解题 2.1 哈希map 2.2 Trie树 1. 题目 给定一组唯一的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words ...

  9. LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)

    1. 题目 有 n 个人,每个人都有一个 0 到 n-1 的唯一 id . 给你数组 watchedVideos 和 friends ,其中 watchedVideos[i] 和 friends[i] ...

最新文章

  1. 大数据2 Hadoop伪分布模式配置部署
  2. C语言的本质(4)——浮点数的本质与运算
  3. 从实例入手学习Shiro与Web的整合
  4. Hibernate 中的DetachedCriteria。
  5. isinstance和issubclass
  6. Android圆角矩形
  7. SQL语句如何判断某字段是以字母开头而不是汉字开头
  8. 8-14 领导者选举
  9. python和c先学哪个-C 和 Python语言先学哪个好?
  10. 【大数据部落】R语言实现:混合正态分布EM最大期望估计法
  11. less文件转换为css文件
  12. 2022年计算机软件水平考试嵌入式系统设计师(中级)练习题及答案
  13. 【Pygame闯关游戏】手残勿入,最新虐心游戏《见缝插针》——不得不玩的一款游戏。
  14. OpenSIPS实战(一):OpenSIPS使用简介
  15. Java学习笔记——判断一个数是否是质数
  16. 华硕笔记本电脑点击桌面后,鼠标一直转圈;右键后,鼠标一直转圈?
  17. 学计算机必须要掌握的单词,学习计算机技术必须掌握的53个计算机专业英文单词...
  18. 计算机sd模式怎么打游戏,绝地求生提升fps方法,绝地求生吃鸡游戏提高帧数优化教程(图文)...
  19. 小码农的职场人生一:由张小平离职引发的一些吐槽
  20. php交易商城项目源代码,PHP源码交易商城网站整站源码(商业运行版)

热门文章

  1. 美国计算机专业硏究生,2014年美国计算机专业研究生排名
  2. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
  3. django--通过model拿到字段对象
  4. 《领域驱动设计》第二部分:模型驱动设计的构造块 第四章:分离领域 阅读笔记...
  5. Samba远程代码执行漏洞(CVE-2017-7494)复现
  6. Tomcat 在mac上(Idea)端口冲突解决办法
  7. 代理模式——HeadFirst设计模式学习笔记
  8. 再议 语法高亮插件的选择
  9. lightoj 1026 无向图 求桥
  10. 测试工具的选择和使用