前端JavaScript解算法编程题(—)
1、栈
(1)介绍:
栈是一个后进先出的数据结构。
Javascript中没有栈这一数据结构,但可通过Array来实现栈的所有功能。
(2)主要的应用场景
符合后进先出这一特点的场景即可适用。例如有效的括号,函数调用堆栈等。
(3)编程题:
(力扣中的题目)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解题思路:
(1)新建一个栈
(2)将参数字符串进行扫描,遇左括号入栈,遇到和栈顶括号类型匹配的右括号则出栈,类型不匹配则判定不合法
(3)栈空即合法,不空则不合法。
function isEqual = function(s){
//如果为奇数,则直接返回
if(s.length % 2 === 1) { return false };
//定义一个栈
const stack = [];
//遍历字符串中的元素
for(let i = 0 ; i < s.length ; i++){
const c = s[i];
if(c === '(' || c === '[' || c === '{'){
//符合上述的条件则入栈
stack.push(c);
}else{
//取出栈顶
const t = stack[stack.length - 1];
//将栈顶与元素进行相应的比对
if((t === '(' && c === ')') || (t === '[' && c === ']') || (t === '{' && c === '}')){
//符合条件则出栈
stack.pop();
}else{
return false;
}
}
}
return stack.length === 0;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。