Created
January 7, 2018 14:01
-
-
Save volonbolon/f33014f7211c7c8bb44cc8daa243b7e4 to your computer and use it in GitHub Desktop.
Delete elements from an array
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//: 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