栈结构( TypeScript )
- 一种只能在一端进行插入和删除操作的特殊线性表
- 先进后出(First In Last Out)
利用数组实现类
class ArrayStack<T> {
private stackData: T[] = []
push(element: T): void {
this.stackData.push(element)
}
pop(): T | undefined {
return this.stackData.pop()
}
peek(): T | undefined {
return this.stackData[this.stackData.length - 1]
}
isEmpty(): boolean {
return this.stackData.length === 0
}
size(): number {
return this.stackData.length
}
}
利用栈结构判断括号是否有效
对应力扣题目
function bracketsIsValid(s: string): boolean {
const stack = new ArrayStack<string>()
for (let i = 0; i < s.length; i++) {
const bracket = s.charAt(i)
switch (bracket) {
case "(":
stack.push(")")
break
case "{":
stack.push("}")
break
case "[":
stack.push("]")
break
default:
if (stack.pop() !== bracket) return false
}
}
return stack.size() === 0
}
栈结构实现十进制转化为二进制
function decimalToBinary(decimal: number): string {
const stack = new ArrayStack<number>()
let res: string = ""
while(decimal !== 0) {
const remainder = decimal % 2
stack.push(remainder)
decimal = Math.floor(decimal / 2)
}
while(!stack.isEmpty()) {
res = res + "" + stack.pop()
}
return res
}