1、 字符串中 "(" , ")" 是否匹配?
func find(list: String) -> Bool {
var num : Int = 0
for str in list.characters {
if str == "(" {
num += 1
} else if str == ")" {
if num > 0 {
num -= 1
} else {
return false
}
}
}
if num == 0 {
return true
}
return false
}
let value = find(list: "(3+4)(5+6)(6(7+8)-8)((()))")
2、循环buffer,基于数组,实现pop和push。
循环队列判断空和满的条件.png
class CircleBuff {
private var size: Int = 0 // 真正size = size - 1
private var start: Int = 0 // 将要pop的Index
private var end: Int = 0 // 将要push的Index
private var array: [Int?] = []
init(size: Int) {
self.size = size
for _ in 0 ..< size {
array.append(nil)
}
}
func pop()-> Int? {
print("")
print("pop" )
if isEmpty() {
print("quene is empty!")
return nil
}
let value = array[start]
array[start] = nil
start += 1
if start >= size {
start = 0
}
print(array)
print("start:" + "\(start)" )
print("end:" + "\(end)" )
return value
}
func push(_ param: Int) {
print("")
print("push" )
if isFull() {
print("quene is full!")
print("插入失败:" + "\(param)")
return
}
array[end] = param
end += 1
if end >= size {
end = 0
}
print(array)
print("start:" + "\(start)" )
print("end:" + "\(end)" )
}
func isEmpty() -> Bool {
if start == end {
return true
}
return false
}
func isFull() -> Bool {
if (end + 1) % size == start {
return true
}
return false
}
}
let buff = CircleBuff.init(size: 5)
buff.push(1)
buff.push(2)
buff.push(3)
buff.push(4)
buff.push(5)
buff.push(6)
buff.push(7)
buff.push(8)
buff.push(9)
buff.push(10)
buff.pop()
buff.pop()
buff.push(11)
buff.push(12)
buff.push(13)
网友评论