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 相关文章推荐
jQuery的each终止或跳过示例代码
Dec 12 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
Javascript动态创建div的方法
Feb 09 Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 Javascript
js实现简单的碰壁反弹效果
Aug 30 Javascript
jQuery日程管理插件fullcalendar使用详解
Jan 07 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
VUE重点问题总结
Mar 19 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
node.js遍历目录的方法示例
Aug 01 Javascript
浅谈layer弹出层按钮颜色修改方法
Sep 11 Javascript
jQuery表单校验插件validator使用方法详解
Feb 18 jQuery
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
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
Python常见数据结构详解
2014/07/24 Python
python一键升级所有pip package的方法
2017/01/16 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python pip 常用命令汇总
2020/10/19 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
会计电算化专业毕业生推荐信
2013/12/24 职场文书
亮化工程实施方案
2014/03/17 职场文书
教研活动总结
2014/04/28 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
企业安全生产规章制度
2015/08/06 职场文书
安全教育的主题班会
2015/08/13 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android