互动的网站建设,河北邯郸做移动网站,微信小程序开发怎么做,做网站开发没有人带给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹#xff1a;在第 i 分钟#xff0c;新建名为 names[i] 的文件夹。
由于两个文件 不能 共享相同的文件名#xff0c;因此如果新建文件夹使用的文件名已经被占用#xff0c;系统会以 (k) 的形式为新…给你一个长度为 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] 由小写英文字母、数字和/或圆括号组成。 注意 比如下面string(120) 你期望返回的结果是什么如果你有使用其他编程语言的经验那么大多数人的猜测是“ 123”。相反在Go中上面的类型转换会得到“ E”之类的值那根本不是我们想要的。因为string()会直接把字节或者数字转换为字符的UTF-8表现形式。 所以在Go中将byte或者int类型的值转换为数字的字符串表现形式的正确方法是使用strconv包中的方法比如strconv.Itoa。 public String[] getFolderNames(String[] names) {int length names.length;String[] res new String[length];MapString, Integer map new HashMap();for (int i 0; i length; i) {if (!map.containsKey(names[i])){map.put(names[i],1);res[i]names[i];}else {Integer index map.get(names[i]);String tempnames[i](index);while (map.containsKey(temp)){index;tempnames[i](index);}map.put(names[i],index1);map.put(temp,1);res[i]temp;}}return res;}func getFolderNames(names [] string) [] string {length : len(names)res : make([]string,length)mapX:make(map[string]int,0)for i : 0; i length; i {if index,ok:mapX[names[i]];!ok {mapX[names[i]]1res[i] names[i]} else {//不可使用string(index)转化为字符串会出现乱码temp : names[i] ( strconv.Itoa(index) )for x:mapX[temp];x!0;xmapX[temp]{fmt.Println(mapX[temp],x)indextemp names[i] ( strconv.Itoa(index) )}mapX[names[i]]index1mapX[temp]1res[i] temp}}return res
}