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)

 

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