javascript数据结构中栈的应用之符号平衡问题


Posted in Javascript onApril 11, 2017

本文实例讲述了javascript数据结构中栈的应用之符号平衡问题。分享给大家供大家参考,具体如下:

由于栈先进后出的结构,我们可以将其作为有用的工具,下面就介绍一下栈的应用。

首先是符号的平衡问题。有一串字符串,我们需要判断其中固定的字符是否成对出现,比如<> {} [] () 等。当然实现的方法有很多,但是采用栈的实现会相对更加简单。

实现上述算法的JavaScript代码如下

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<script type="text/javascript">
  function isbalance(str){
    var str=str.toString(),
      len=str.length,
      myArray=new Array();
    for(var i=0;i<len;i++){
      if(str[i]=='['||str[i]=='{'||str[i]=='('){
        myArray.push(str[i]);
      }
      if(str[i]==']'||str[i]=='}'||str[i]==')'){
        if(myArray.length==0){
          document.write("the string 不平衡");
          return false;
        }
        var popValue=myArray.pop();
        switch(str[i]){
          case ']':{
            if('['!=popValue){
              document.write('] 不平衡');
            }
            break;
          }
          case '}':{
            if('{'!=popValue){
              document.write('} 不平衡');
            }
            break;
          }
          case ')':{
            if('('!=popValue){
              document.write(') 不平衡');
            }
            break;
          }
          default:
            break;
        }
      }
    }
  }
  isbalance('{[]}');//true
  isbalance('{[[]]}');//true
  isbalance('(()[])');//true
  isbalance('{[]]');//false
</script>
  </body>
</html>

算法的思想是:假设在读入一串字符串以后,如果遇到对称符号的左边部分,则将其压入栈中,当遇到对称符号的右边部分,则弹出栈中的一个对象,实现比对,如果是对称的,则说明当前的符号是平衡的,如果不对称,则说明当前字符串是不平衡的,当字符串读完以后,如果所有的符号都是平衡的,栈中此时应该就是为空,通过判断栈中是否为空,说明字符串是否是符号平衡的

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js里的prototype使用示例
Nov 19 Javascript
jquery 简单应用示例总结
Aug 09 Javascript
javascript删除option选项的多种方法总结
Nov 22 Javascript
JavaScript实现可拖拽的拖动层Div实例
Aug 05 Javascript
jquery datatable服务端分页
Aug 31 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
angular2中使用第三方js库的实例
Feb 26 Javascript
vue源码学习之Object.defineProperty对象属性监听
May 30 Javascript
element ui table(表格)实现点击一行展开功能
Dec 04 Javascript
Angular实现svg和png图片下载实现
May 05 Javascript
微信小程序实现点击图片放大预览
Oct 21 Javascript
javascript实现鼠标点击生成文字特效
Dec 24 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 #Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 #Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 #Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 #Javascript
基于vuejs实现一个todolist项目
Apr 11 #Javascript
vue实现todolist单页面应用
Apr 11 #Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 #Javascript
You might like
世界上第一台立体声收音机
2021/03/01 无线电
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
python发送arp欺骗攻击代码分析
2014/01/16 Python
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
深入理解Javascript中的this关键字
2015/03/27 Python
详细介绍Python函数中的默认参数
2015/03/30 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
pandas实现导出数据的四种方式
2020/12/13 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
项目采购员岗位职责
2014/04/15 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2015年班组长工作总结
2015/04/10 职场文书
运动会1000米加油稿
2015/07/21 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers