leetcode刷题250天(72)——1487. 保证文件名唯一(哈希表)

本文介绍了一种算法,用于在创建文件夹时处理名称冲突,通过字典记录已使用名称,为新文件夹生成唯一名称(如 names[i]+(k)),确保所有文件夹名字的唯一性。

给你一个长度为 n 的字符串数组 names 。
你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。

由于两个文件 不能 共享相同的文件名,
因此如果新建文件夹使用的文件名已经被占用,
系统会以 (k) 的形式为新文件夹的文件名添加后缀,
其中 k 是能保证文件名唯一的 最小正整数

解题思路:
用字典保存当前是否遇到过此串 键为串 值为次数
如果新加入的串键值大于等于1,则在其后拼凑(x)并再次与字典值对比,直到不存在时加入
在此期间更新字典

class Solution(object):
    def getFolderNames(self, names):
        namesDict = {}
        res = []

        for name in names:
            # print("name", name)
            if name not in namesDict:
                res.append(name)
                namesDict[name] = 1

            elif name in namesDict:
                curName = name + "(" + str(namesDict[name]) + ")"
                # print("curName", curName)
                namesDict[name] += 1

                while curName in namesDict:
                    curName = name + "(" + str(namesDict[name]) + ")"
                    # print("curName_while", curName)
                    namesDict[name] += 1

                res.append(curName)
                namesDict[curName] = 1
            else:
                pass

            # print("namesDict", namesDict)

        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值