"""
题目分析:
这题难度标的是中等,但做下来感觉还可以;是字典/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)