【每日一题Day135】LC1487保证文件名唯一 | 哈希表

简介: 【每日一题Day135】LC1487保证文件名唯一 | 哈希表

保证文件名唯一【LC1487】

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

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

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

思路:

使用哈希表统计每个文件名出现的次数,如果哈希表中未出现过该文件名,那么不需要添加后缀,将其直接放入哈希表中;如果哈希表中出现过该文件名,那么需要找到不存在与哈希表中的最小后缀k,那么新文件夹的文件名为file=names[i]+ "(" + k + ")",然后在哈希表中更新names[i] 出现的次数和file。

实现

class Solution {
    public String[] getFolderNames(String[] names) {
        int n = names.length;
        Map<String, Integer> map = new HashMap<>();
        String[] res = new String[n];
        for (int i = 0; i < n; i++){
            if (!map.containsKey(names[i])){
                map.put(names[i], 1);
                res[i] = names[i];
            }else{        
                int count = map.get(names[i]);
                while (map.containsKey(names[i] + "(" + count + ")")){
                    count++;
                }
                String file = names[i] + "(" + count + ")";                
                res[i] = file;
                map.put(file, 1);
                map.put(names[i], count);
            }
        }
        return res;
    }
}

image.png

目录
相关文章
|
Python
【每日一题Day105】LC2325解密消息 | 哈希表
思路:使用哈希表记录每个字母对应的译文,然后结果为以message中的每个字母为key的value值的拼接
106 0
【每日一题Day86】LC2287 重排字符形成目标字符串 | 哈希表
思路:使用两个哈希表记录两个字符串中字符出现的次数,假设某个字符的在s和target中出现次数分别为a和b ,那么该字母可被重排的次数为⌊ a/ b ⌋ ,target可以被重排的次数为所有字母可被重排的最小值。
86 0
|
10月前
|
存储 缓存
【每日一题Day336】LC146最近最少使用缓存 | 哈希表+链表
【每日一题Day336】LC146最近最少使用缓存 | 哈希表+链表
61 0
【每日一题DAY21】LC1684统计一致字符串的数目|哈希表
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。
88 0
|
10月前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
56 0
|
存储 Windows
388. 文件的最长绝对路径 : 哈希表模拟题
388. 文件的最长绝对路径 : 哈希表模拟题
【每日一题Day71】LC2032至少在两个数组中出现的值 | 哈希表 + 位运算
思路:使用一个哈希表记录每个数字在三个数组中的出现情况,哈希表的key值为数值大小,value值为该数字在数组中的出现情况,从左到右第i位为1则表示该数字在第i个数组中出现过。最后根据value值将至少出现在两个数组中的num添加至结果集
88 0
|
10月前
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
65 0
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
【每日一题Day93】LC1817查找用户活跃分钟数 | 哈希表
思路:使用哈希表记录每个用户的活跃时间,那么用户活跃分钟数则为活跃时间的多少,因此哈希表的key值为用户id,value值为Set集合
91 0
|
10月前
|
机器学习/深度学习
【每日一题Day120】LC2341数组能形成多少数对 | 哈希表 排序
【每日一题Day120】LC2341数组能形成多少数对 | 哈希表 排序
52 0