gpt4 book ai didi

arrays - 如何在 Swift 中仅删除整数数组中的相邻重复项?

转载 作者:行者123 更新时间:2023-11-30 10:29:52 25 4
gpt4 key购买 nike

我的实现:

extension Array where Element:Equatable {
func removeDuplicates() -> [Element] {
var result = [Element]()

for value in self {
if result.contains(value) == false {
let r = result.append(value)
}
}
return result
}
}
let arrayOfInts = [1, 2, 2, 3, 3, 3, 1].reverse()
for element in arrayOfInts.removeDuplicates(){
print(element)
}

我想在删除相邻整数后对数组执行操作。

最佳答案

这可以通过将当前数组的元素添加到新数组中来简单地解决,但仅在当前元素不等于最后一个元素时才附加当前元素,以解决重复的相邻问题。尝试这个解决方案。

extension Array where Element:Equatable {
func removeDuplicates()->[Element]{
guard !self.isEmpty else { return [] }
var noDuplicates = [Element]()

for (index, element) in self.enumerated(){
if index > 0{

if element != noDuplicates.last{

noDuplicates.append(element)
}
}
else{
noDuplicates.append(element)
}


}

return noDuplicates
}
}

编辑:此外,如果您在反转数组后在 ReversedCollection 上使用此扩展时遇到问题,那是因为 Swift 认为它与 Array 类型不同。一旦反转Array,它就不再是一个数组,而是成为一个名为ReversedCollection 的单独类型。如果您想将此扩展应用于 ReversedCollection 类型以及数组,则需要创建一个不限于数组且包含 Reversed CollectionArray 的扩展 类型或将 ReversedCollection 转换为 Array

extension Collection where Element:Equatable {

或者

let arrayOfInts = Array([1, 2, 2, 3, 3, 3, 1].reversed())
for element in arrayOfInts.removeDuplicates(){
print(element)
}

关于arrays - 如何在 Swift 中仅删除整数数组中的相邻重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382540/

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