标签:esc ons 线性结构 特殊 racket for cti UNC const
module.exports = function Stack() {
// 初始化一个栈
const arr = []
// 压栈
this.push = item => arr.push(item)
// 弹栈
this.pop = () => arr.pop()
// 返回栈顶元素
this.top = () => arr[arr.length - 1]
// 栈的大小
this.size = () => arr.length
// 栈是否为空
this.isEmpty = () => arr.length === 0
// 清空栈
this.clear = () => arr.splice(0, arr.length)
}
3.栈的简单应用、
需求: 判断一个字符串中的括号是否成对,是否合法?
const str1 = ‘((3223)2)2(2)‘
const str2 = ‘)22(12)sf1(sdfs‘
思路:
步骤:
// 1. 引入栈结构的构造函数
const Stack = require('./Stack')
const str1 = '((3223)2)2(2)'
const str2 = ')22(12)sf1(sdfs'
// 2. 创建一个函数,在函数中初始化一个栈结构,遍历要判断的字符串
/**
* @description 判断一个字符串中包含的括号是否成对,是否合法
* @param {String} str 要判断合法性的字符串
*/
function is_legal_brackets(str) {
// 初始化栈结构
const stack = new Stack()
// 遍历字符串
for (const item of str) {
if (item === '(') {
stack.push(item)
}
if (item === ')') {
if (stack.isEmpty()) {
return '不合法'
}
stack.pop()
}
}
return stack.isEmpty() ? '合法' : '不合法'
}
// 3. 调用定义好的is_legal_brackets函数
console.log('str1是否合法? => ', is_legal_brackets(str1)); // 合法
console.log('str2是否合法? => ', is_legal_brackets(str2)); // 不合法
标签:esc ons 线性结构 特殊 racket for cti UNC const
原文地址:https://www.cnblogs.com/guojbing/p/10989632.html