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 相关文章推荐
javascript日期转换 时间戳转日期格式
Nov 05 Javascript
jQuery滚动加载图片效果的实现
Mar 06 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
Oct 24 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
javascript读取xml实现javascript分页
Dec 13 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
示例vue 的keep-alive缓存功能的实现
Dec 13 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
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
我的论坛源代码(四)
2006/10/09 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
javascript实现电商放大镜效果
2020/11/23 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python 实现多线程下载视频的代码
2019/11/15 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
自我鉴定书面格式
2014/01/13 职场文书
活动总结的格式
2014/05/07 职场文书
中秋晚会策划方案
2014/06/12 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
小时代观后感
2015/06/10 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android