使用kotlin解决这个问题:1487. 保证文件名唯一 提示 中等 131 相关企业 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数 。 返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。
时间: 2024-02-20 18:02:36 浏览: 107
详解 Kotlin Reference Basic Types, String, Array and Imports
以下是使用 Kotlin 解决该问题的代码:
```kotlin
fun getUniqueNames(names: Array<String>): Array<String> {
val map = mutableMapOf<String, Int>()
val result = Array(names.size) { "" }
for (i in 0 until names.size) {
val name = names[i]
if (map.containsKey(name)) {
val count = map[name]!! + 1
var uniqueName = "$name($count)"
while (map.containsKey(uniqueName)) {
uniqueName = "$name(${++count})"
}
map[name] = count
result[i] = uniqueName
map[uniqueName] = 0
} else {
result[i] = name
map[name] = 0
}
}
return result
}
```
该函数接受一个字符串数组 `names`,返回一个与 `names` 相同长度的字符串数组 `result`,其中 `result[i]` 是第 `i` 个文件夹实际名称。该函数使用一个 `map` 来记录文件名出现的次数,并根据需要添加后缀来保证文件名唯一。
具体实现是,遍历 `names` 数组,对于每个文件名,如果在 `map` 中已经存在,说明需要添加后缀,就取出该文件名出现的次数,加一后作为后缀。如果该后缀也已经存在,就继续加一,直到找到一个不存在的后缀为止。然后将文件名和后缀更新到 `map` 中,将实际名称更新到 `result` 中。如果文件名在 `map` 中不存在,说明可以直接使用,将其更新到 `map` 和 `result` 中即可。
阅读全文