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的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
Mar 09 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
jQuery使用deferreds串行多个ajax请求
Aug 22 Javascript
jQuery easyui刷新当前tabs的方法
Sep 23 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 jQuery
完美解决linux下node.js全局模块找不到的情况
May 16 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
Oct 09 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
数据库的日期格式转换
2006/10/09 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
RealTek面试题
2016/06/28 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
MYSQL支持事务吗
2013/08/09 面试题
电大自我鉴定
2013/10/27 职场文书
土地转让协议书范本
2014/04/15 职场文书
小学生读书活动总结
2014/06/30 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL