给你一个长度为 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)”
代码
class Solution {public String[] getFolderNames(String[] names) {int n=names.length,i=0;String[] res=new String[n];Map<String,Integer> map=new HashMap<>();for(String s:names){if(map.containsKey(s)) {int temp=map.get(s);while (map.containsKey(s+'('+temp+')'))//找出未被使用的后缀temp++;String t=s+'('+temp+')';res[i]=t;map.put(t,1);//记录文件名map.put(s,temp);//更新后缀} else {res[i]=s;map.put(s,1);//记录文件名} i++;}return res;}
}