Skip to content

Instantly share code, notes, and snippets.

@volonbolon
Created January 7, 2018 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save volonbolon/f33014f7211c7c8bb44cc8daa243b7e4 to your computer and use it in GitHub Desktop.
Save volonbolon/f33014f7211c7c8bb44cc8daa243b7e4 to your computer and use it in GitHub Desktop.
Delete elements from an array
//: Playground - noun: a place where people can play
import UIKit
// General Case for an Array
extension Array where Element:Hashable {
mutating func deleteElements(_ elements:[Element]) -> ArraySlice<Element> {
var toDelete: [Element: Bool] = [:]
for e in elements {
toDelete[e] = true
}
var dst = 0
var src = 0
for i in self {
let found = toDelete[i, default: false]
if !found {
self[dst] = self[src]
dst += 1
}
src += 1
}
return self[..<dst]
}
}
var a = [1,2,3,4,5,6]
let ad = a.deleteElements([1,4])
assert(ad == [2, 3, 5, 6])
extension String {
func deleteChars(_ chars: String) -> String {
var stringArray = Array(self.lowercased())
let lowercasedChars = chars.lowercased()
let toDeleteArray = Array(lowercasedChars)
let result = stringArray.deleteElements(toDeleteArray)
let resultAsString = String(result)
return resultAsString
}
}
var str = "As Gregor Samsa awoke one morning from uneasy dreams he found himself transformed in his bed into an enormous insect."
let deleted = str.deleteChars("aeiou")
assert(deleted == "s grgr sms wk n mrnng frm nsy drms h fnd hmslf trnsfrmd n hs bd nt n nrms nsct.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment