美文网首页程序员
笔试算法须知---用JS实现栈处理问题

笔试算法须知---用JS实现栈处理问题

作者: edisonchan | 来源:发表于2017-09-24 01:01 被阅读0次

使用js实现stack

栈的性质:先进后出,只能在栈顶插入和删除

这就是一个栈
function Stack() {
      this.stackData = []; //保存栈内元素,初始化为一个空数组;
      this.top = 0;//栈顶位置,初始为0;
      this.push = push;//入栈
      this.pop = pop;//出栈
      this.peek = peek;//查看栈顶元素
      this.clear = clear;//清空栈
      this.length = length;//栈内存放的元素个数
}
function push(element){
      this.stackData[this.top++] = element;
}
function pop(){
      return this.stackData[--this.top];
}
function length(){
      return this.top;
}
function peek(){
      return this.stackData[this.top-1];
}
function clear(){
      this.top = 0;
}

/*测试stack的实现 */

var s = new Stack();
s.push("aa");
s.push("bb");
s.push("cc");
console.log(s.length());//3
console.log(s.peek());//cc
var popped = s.pop();
console.log(popped);//cc
console.log(s.peek());//bb

之前有道某雷的前端笔试题就是需要用到js实现栈来处理问题
题目大概就是:给你一个括号字符串,字符串中含有()[]{},然后判断该字符串中的括号是否合法匹配。

样例输入:
( [ { ] } )
输出:不合法
样例输入:
( [ ] { ( ) } )
输出:合法

function MatchBracket(BracketString){//函数名:匹配括号,参数:括号字符串
var s = new Stack();
var bs = Array.from(BracketString);
for(var i=0;i<bs.length-1;i++){
  switch(bs[i]){
      case '{':
      case '[':
      case '(':
          s.push(bs[i]);//凡是左括号通通入栈
          break;
      case ')':
      case ']':
      case '}':
          var topEle = s.pop();
          if((topEle=="(" && bs[i]==")") || (topEle=="[" && bs[i]=="]") || (topEle=="{" && bs[i]=="}")){
             break;
             //判断左括号与右括号是否能匹配上
          }else{
            console.log("不合法");
            return;
          }
  }
}
      if(s.top==0){
          return "合法";
      }else{
          return "不合法";
      }
}

完整代码见Github:

https://github.com/edisonchan97/JS-algorithm/blob/master/%E5%8C%B9%E9%85%8D%E6%8B%AC%E5%8F%B7%E4%BB%A3%E7%A0%81

相关文章

  • 笔试算法须知---用JS实现栈处理问题

    使用js实现stack 栈的性质:先进后出,只能在栈顶插入和删除 /*测试stack的实现 */ 之前有道某雷的前...

  • 笔试算法须知---用JS实现队列处理问题

    队列 普通队列 先进先出FIFO 循环队列 队首出队后,又从队尾入队 优先队列如果优先值小的元素放到队列的前面,这...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 2021-12-06

    leetcode 用两个栈实现队列 须知:Python的栈的pop( )函数返回栈顶元素 思路: 两个栈 一个栈...

  • Java 用数组实现的栈

    最近在看算法,看到了栈,就想着有一次面试时遇到了笔试题是,自己实现一个栈结构,当时没有写出来,现在看到,就想着用数...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 前端-算法1:栈、队列、链表

    栈 一个先进后出的数据结构JS中没有栈,用Array实现栈的功能进栈: push 出栈:pop栈的应用场景: 十进...

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 链表的JS实现

    参考链接:栈的JS实现

  • 下压堆栈(链表实现)

    该栈用链表实现,并是泛型的、可迭代的栈。参考于算法(第四版)的算法1.2下面是java代码: 测试结果: 附上自定...

网友评论

    本文标题:笔试算法须知---用JS实现栈处理问题

    本文链接:https://www.haomeiwen.com/subject/szoxextx.html