LeetCode 1487. 保证文件名唯一(哈希map)
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)相关推荐
- leetcode1487. 保证文件名唯一
给你一个长度为 n 的字符串数组 names .你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹. 由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使 ...
- LeetCode 1166. 设计文件系统(哈希map)
文章目录 1. 题目 2. 解题 1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联 ...
- LeetCode 205. 同构字符串(哈希map)
1. 题目 给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序. 两个字符 ...
- LeetCode 1429. 第一个唯一数字(map+queue)
文章目录 1. 题目 2. 解题 1. 题目 给定一系列整数,插入一个队列中,找出队列中第一个唯一整数. 实现 FirstUnique 类: FirstUnique(int[] nums) 用数组里的 ...
- LeetCode 1146. 快照数组(哈希map + 有序map)
文章目录 1. 题目 2. 解题 1. 题目 实现支持下列接口的「快照数组」- SnapshotArray: SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 ...
- LeetCode 1181. 前后拼接(哈希map)
文章目录 1. 题目 2. 解题 1. 题目 给你一个「短语」列表 phrases,请你帮忙按规则生成拼接后的「新短语」列表. 「短语」(phrase)是仅由小写英文字母和空格组成的字符串.「短语」的 ...
- LeetCode 359. 日志速率限制器(哈希map)
文章目录 1. 题目 2. 解题 1. 题目 请你设计一个日志系统,可以流式接收日志以及它的时间戳. 该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过. 给你 ...
- LeetCode 336. 回文对(哈希map/Trie树)
文章目录 1. 题目 2. 解题 2.1 哈希map 2.2 Trie树 1. 题目 给定一组唯一的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words ...
- LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)
1. 题目 有 n 个人,每个人都有一个 0 到 n-1 的唯一 id . 给你数组 watchedVideos 和 friends ,其中 watchedVideos[i] 和 friends[i] ...
最新文章
- 大数据2 Hadoop伪分布模式配置部署
- C语言的本质(4)——浮点数的本质与运算
- 从实例入手学习Shiro与Web的整合
- Hibernate 中的DetachedCriteria。
- isinstance和issubclass
- Android圆角矩形
- SQL语句如何判断某字段是以字母开头而不是汉字开头
- 8-14 领导者选举
- python和c先学哪个-C 和 Python语言先学哪个好?
- 【大数据部落】R语言实现:混合正态分布EM最大期望估计法
- less文件转换为css文件
- 2022年计算机软件水平考试嵌入式系统设计师(中级)练习题及答案
- 【Pygame闯关游戏】手残勿入,最新虐心游戏《见缝插针》——不得不玩的一款游戏。
- OpenSIPS实战(一):OpenSIPS使用简介
- Java学习笔记——判断一个数是否是质数
- 华硕笔记本电脑点击桌面后,鼠标一直转圈;右键后,鼠标一直转圈?
- 学计算机必须要掌握的单词,学习计算机技术必须掌握的53个计算机专业英文单词...
- 计算机sd模式怎么打游戏,绝地求生提升fps方法,绝地求生吃鸡游戏提高帧数优化教程(图文)...
- 小码农的职场人生一:由张小平离职引发的一些吐槽
- php交易商城项目源代码,PHP源码交易商城网站整站源码(商业运行版)
热门文章
- 美国计算机专业硏究生,2014年美国计算机专业研究生排名
- webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
- django--通过model拿到字段对象
- 《领域驱动设计》第二部分:模型驱动设计的构造块 第四章:分离领域 阅读笔记...
- Samba远程代码执行漏洞(CVE-2017-7494)复现
- Tomcat 在mac上(Idea)端口冲突解决办法
- 代理模式——HeadFirst设计模式学习笔记
- 再议 语法高亮插件的选择
- lightoj 1026 无向图 求桥
- 测试工具的选择和使用