【Java|golang】1487. 保证文件名唯一---golang中string方法的坑
创始人
2024-05-28 16:46:28
0

给你一个长度为 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];Map 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 temp=names[i]+"("+index+")";while (map.containsKey(temp)){index++;temp=names[i]+"("+index+")";}map.put(names[i],index+1);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;x=mapX[temp]{fmt.Println(mapX[temp],x)index++temp = names[i] + "(" + strconv.Itoa(index) + ")"}mapX[names[i]]=index+1mapX[temp]=1res[i] = temp}}return res
}

在这里插入图片描述

相关内容

热门资讯

追悼会家属答谢词 追悼会家属答谢词尊敬的各位领导,各位亲朋好友,感谢各位今天出席亡母的追悼会。在母亲生病住院期间,承蒙...
重阳节活动主持词开场白 重阳节活动主持词开场白  在这金秋送爽,硕果累累的时节,我们迎来了又一个九九重阳节。下面是小编精心为...
郭德纲相声小段子台词 郭德纲相声小段子台词  相声,一种民间说唱曲艺。它以说,学,逗,唱为形式,突出其特点。下面是小编整理...
《将夜》经典台词 《将夜》经典台词  1.这片海洋,当时这里还有日出,在阳光的照射下,这片海洋是透明的',看上去就像是...
晚会主持词 【实用】晚会主持词(精选17篇)  主持词是主持人在节目进行过程中用于串联节目的串联词。在如今这个时...
春节晚会主持词 给力春节晚会主持词(通用3篇)  主持词的写作需要将主题贯穿于所有节目之中。在现今人们越来越重视活动...
婚礼上领导致辞 婚礼上领导致辞(通用7篇)  在日复一日的学习、工作或生活中,大家都经常接触到致辞吧,致辞要求风格的...
晚会结束语 晚会结束语(通用13篇)  闭幕词是一些大型会议结束时由有关领导人或德高望重者向会议所作的讲话。具有...
介绍毕业典礼舞蹈追梦的主持词 介绍毕业典礼舞蹈追梦的主持词(精选6篇)  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观...
员工誓师大会主持词 员工誓师大会主持词  誓师大会,又名 造势大会,两者皆可以称为“誓师会”,“造势会”,不过如此公共关...
教职工运动会入场式解说词 教职工运动会入场式解说词  在快速变化和不断变革的今天,我们可以使用解说词的机会越来越多,解说词让观...
央视春晚小品的经典台词 央视春晚小品的经典台词  小品《快乐老爸》  为了狗大点事,你还要得学门外语呀?  他是用泪水洗刷自...
《遇见王沥川》的经典台词 《遇见王沥川》的经典台词  1、爱情是干渴的,除非你遇上一个像沥川那样的.男人。  2、爱情是进行时...
回门宴主持词开场白   回门宴主持词开场白  亲爱的各位来宾,各位亲朋好友,先生们,女士们大家上午好! 玉兔奔月去,祥龙...
培训会议结束语 培训会议结束语(精选5篇)  总结是对某一阶段的工作、学习或思想中的经验或情况进行分析研究的书面材料...
新年联欢晚会开场白主持词   2位主持人同时出场  谢:尊敬的各位来宾  陈:亲爱的朋友们  合:新年好!  谢:时间如流水,...
结婚拜天地主持词 结婚拜天地主持词(精选8篇)  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观众。在各种集...
主持人主持词 主持人主持词范本6篇  主持词是各种演出活动和集会中主持人串联节目的串联词。时代不断在进步,司仪等是...
春节团拜会主持词 春节团拜会主持词  主持词的写作要突出活动的主旨并贯穿始终。在一步步向前发展的社会中,主持人参与的事...
《大内密探灵灵狗》的搞笑台词 《大内密探灵灵狗》的搞笑台词  1、丽妃娘娘打扮停当,来到寝宫,皇帝一脸苦相地迎上去:美人,你是不是...