seriyvolk83
BAN USERstruct RoomLog {
let log: String
}
var log = [
RoomLog(log: "E 111"),
RoomLog(log: "E 222"),
RoomLog(log: "L 111"),
RoomLog(log: "E 111"),
RoomLog(log: "L 222"),
RoomLog(log: "L 111"),
]
func isLogWellFormed(_ log: [RoomLog]) -> Bool {
var set = Set<String>()
for item in log {
if item.log.hasPrefix("E ") {
let key = item.log.replace("E ", with: "")
if set.contains(key) { return false } // alrady entered
set.insert(key)
}
else if item.log.hasPrefix("L ") {
let key = item.log.replace("L ", with: "")
set.remove(key)
}
else {
return false// incorrect log record
}
}
return true
}
extension String {
func replace(_ str: String, with newString: String) -> String {
return self.replacingOccurrences(of: str, with: newString)
}
}
print("well formed: \(isLogWellFormed(log))") // well formed: true
var a = [1,2,0,5,3,0,4,0]
var k = a.count - 1// next 0 position
var i = 0
while i < a.count && i < k {
if a[i] == 0 {
let t = a[i]; a[i] = a[k]; a[k] = t;
k -= 1
}
else {
i += 1
}
}
print(a)
let zeros = a.count - k
print("zeros: \(zeros)")
We have only a,b,* and + so there are no braces ("(",")"). Hence, we can convert a tree to string very simply and compare it with mathematical representation.
- seriyvolk83 April 07, 2017
- seriyvolk83 April 09, 2017