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最简单的拖拽效果实现代码
Sep 24 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
easyui form validate总是返回false的原因及解决方法
Nov 07 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
Vue中使用webpack别名的方法实例详解
Jun 19 Javascript
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
Sep 11 Javascript
基于JavaScript判断两个对象内容是否相等
Jan 10 Javascript
vue实现瀑布流组件滑动加载更多
Mar 10 Javascript
原生JavaScript实现进度条
Feb 19 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
php开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
用客户端js实现带省略号的分页
2013/04/27 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
解决python写的windows服务不能启动的问题
2014/04/15 Python
wxPython中listbox用法实例详解
2015/06/01 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
广告学专业推荐信范文
2013/11/23 职场文书
师范学院教师自荐书
2014/01/31 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
2014年卫生工作总结
2014/11/27 职场文书
领导工作表现评语
2015/01/04 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
2019银行竞聘书
2019/06/21 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL