LeetCode | 2023.03.03 | 1487. 保证文件名唯一

"""
题目分析:
    这题难度标的是中等,但做下来感觉还可以;是字典/hash表的进阶版
    除了判断当前item,还需要加上序号idx;组成唯一值进行判断
理论:
    1.循环列表name,进行唯一性判断
    2.1 如果name未记录过,存入结果ret,将name存入字典,计数=1
    2.2 如果name已记录过,需要判断序号idx
    2.3 while循环idx至最大值
    2.4 将新组全name+idx存入字典,存入结果ret,计数=1
    3. 返回结果列表ret
注意/难点:
    na
"""
class Solution:
    def getFolderNames(self, names: list) -> list:
        dic={}                                     #初始变量
        ret=[]
        for name in names:
            if  name not in dic:                   #ame未记录过
                ret.append(name)                   #存入结果
                dic[name]=1                        #将name存入字典,计数=1
            else:
                idx=dic[name]                      #读取原计数项
                newName=name+'('+str(idx)+')'      #生成新名字
                while newName in dic:                 #原序号生成过name
                    idx+=1                         #增加序号
                    newName=name+'('+str(idx)+')'      #更新名字
                ret.append(newName)                #存入结果
                dic[newName]=1                    #序号名存入字典
                dic[name]+=1                      #名字计数+1
        return ret
        
# names = ["pes","fifa","gta","pes(2019)"]
names = ["gta","gta(1)","gta","avalon"]
# names = ["wano","wano","wano","wano"]
ans=Solution().getFolderNames(names)
print(ans)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章