【每日一题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

目录
相关文章
|
2月前
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
33 0
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
|
2月前
|
存储
【每日一题Day113】LC1797设计一个验证系统 | 哈希表
【每日一题Day113】LC1797设计一个验证系统 | 哈希表
25 0
|
2月前
|
存储 缓存
【每日一题Day336】LC146最近最少使用缓存 | 哈希表+链表
【每日一题Day336】LC146最近最少使用缓存 | 哈希表+链表
34 0
|
2月前
|
机器学习/深度学习
【每日一题Day120】LC2341数组能形成多少数对 | 哈希表 排序
【每日一题Day120】LC2341数组能形成多少数对 | 哈希表 排序
27 0
|
2月前
|
存储 人工智能 BI
【每日一题Day147】LC1615最大网络秩 | 枚举 哈希表
【每日一题Day147】LC1615最大网络秩 | 枚举 哈希表
35 0
|
2月前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
27 0
|
2月前
|
测试技术 索引
【每日一题Day296】LC833字符串中的查找与替换 | 排序+模拟
【每日一题Day296】LC833字符串中的查找与替换 | 排序+模拟
25 0
|
2月前
|
存储
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
19 0
|
2月前
|
机器学习/深度学习
【每日一题Day128】LC2357使数组中所有元素都等于零 | 排序+模拟 哈希表
【每日一题Day128】LC2357使数组中所有元素都等于零 | 排序+模拟 哈希表
23 0
|
2月前
【每日一题Day215】LC1090受标签影响的最大值 | 贪心+排序+哈希表
【每日一题Day215】LC1090受标签影响的最大值 | 贪心+排序+哈希表
25 0