"""
題目分析:
這題難度標的是中等,但做下來感覺還可以;是字典/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)