gpt4 book ai didi

ios - 如何在数组中只保留 X 个重复项?

转载 作者:行者123 更新时间:2023-11-28 13:06:16 25 4
gpt4 key购买 nike

我试图在一个数组中最多保留 8 个重复项。我通过 S.O. 找到了问题如何从数组中过滤重复项,但我不知道如何在数组中保留最多 8 个重复项。知道如何实现这一目标吗?

以下是我用来过滤重复项的代码:

func removeDuplicates(array: [String]) -> [String] {
var encountered = Set<String>()
var result: [String] = []
for value in array {
if encountered.contains(value) {
// Do not add a duplicate element.
}
else {
// Add value to the set.
encountered.insert(value)
// ... Append the value.
result.append(value)
}
}
return result
}

我想计算有多少重复项,如果 <= 某个选定的数字,则保留它们。

最佳答案

我建议将它放在一个数组扩展中,这样它就可以用于任何类型的内容——整数、字符串、自定义对象等等。

extension Array where Element: Hashable
{
/// Returns a copy of `self` with at most `maxOccurrences` occurrences of any element.
@warn_unused_result
func removeDuplicates(maxOccurrences maxOccurrences: Int = 1) -> [Element]
{
var result: [Element] = []
var occurrences: [Element: Int] = [:]
for value in self {
let count = occurrences[value] ?? 0
if count >= maxOccurrences { continue }
result.append(value)
occurrences[value] = count + 1
}
return result
}
}

var a = [1, 2, 2, 3, 3, 3]
a.removeDuplicates(maxOccurrences: 0) // empty
a.removeDuplicates() // 1, 2, 3
a.removeDuplicates(maxOccurrences: 2) // 1, 2, 2, 3, 3
a.removeDuplicates(maxOccurrences: 3) // 1, 2, 2, 3, 3, 3

关于ios - 如何在数组中只保留 X 个重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com