使用Python创建唯一文件名的程序

使用Python创建唯一文件名的程序

假设我们有一个名为names的包含n个字符串的数组。我们必须在文件系统中创建n个目录,使得在第i分钟时,我们将创建一个名为names [i]的目录。如果两个文件具有相同的名称,则不能具有相同的名称,如果输入重复的目录名称,则系统将在其名称的形式下添加后缀,例如(k),这里,k是最小的正整数,使得得到的名称保持唯一。我们必须找到一个长度为n的字符串数组,其中ans [i]是当我们创建它时将分配给第i个目录的实际名称。

因此,如果输入为names = [“my_dir”,“my_dir(1)”“my_new_dir”“my_new_dir”“abc”],则输出将为[‘my_dir’, ‘my_dir(1)’, ‘my_new_dir’, ‘my_new_dir(1)’, ‘abc’] ,因为“my_new_dir”已经存在一次,那么第一个加上了1。

要解决此问题,我们将按以下步骤操作−

  • dic:一个新的映射,如果某个键不存在,则返回0

  • res:一个新的列表

  • 对于names中的每个名称,执行以下操作:

    • 如果名称不在dic中,则执行以下操作:
      • dic [name]:=dic [name] + 1

      • 在res的末尾插入名称

    • 否则,执行以下操作:

      • newname:=name concatenate ‘(‘ concatenate dic [name] concatenate ‘)’

      • 当newname存在于dic中时,执行以下操作:

      • dic [name]:=dic [name] + 1

      • newname:=name concatenate ‘(‘ concatenate dic [name] concatenate ‘)’

      • dic [newname]:=1

      • 在res的末尾插入newname

  • 返回res

让我们看看以下实现以获得更好的理解 −

示例

from collections import defaultdict
def solve(names):
   dic = defaultdict(int)
   res = []
   for name in names:
      if name not in dic:
         dic[name] += 1
         res.append(name)
      else:
         newname = name +'(' + str(dic[name]) + ')'
         while newname in dic:
            dic[name] += 1
            newname = name +'(' + str(dic[name]) + ')'
         dic[newname] = 1
         res.append(newname)
   return res
names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]
print(solve(names))

输入

["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]

输出

“`python
[‘my_dir’, ‘my_dir(1)’, ‘my_new_dir’, ‘my_new_dir(1)’, ‘abc’]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程