手机网站建设哪个,黄页88登录,工厂招聘信息,推广文案撰写保证文件名唯一【LC1487】 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹#xff1a;在第 i 分钟#xff0c;新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名#xff0c;因此如果新建文件夹使用的文件名已经被占用#xff0…保证文件名唯一【LC1487】 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹在第 i 分钟新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名因此如果新建文件夹使用的文件名已经被占用系统会以 (k) 的形式为新文件夹的文件名添加后缀其中 k 是能保证文件名唯一的 最小正整数 。 返回长度为 n 的字符串数组其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。 思路 使用哈希表统计每个文件名出现的次数如果哈希表中未出现过该文件名那么不需要添加后缀将其直接放入哈希表中如果哈希表中出现过该文件名那么需要找到不存在与哈希表中的最小后缀k那么新文件夹的文件名为filenames[i] ( k )然后在哈希表中更新names[i] 出现的次数和file。 实现 class Solution {public String[] getFolderNames(String[] names) {int n names.length;MapString, 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;}
}复杂度 时间复杂度O(∑i0n−1mi)O(\sum^{n-1} _{i0} m_i)O(∑i0n−1mi),mim_imi表示字符串names[i]names[i]names[i]的长度空间复杂度O(∑i0n−1mi)O(\sum^{n-1} _{i0} m_i)O(∑i0n−1mi)