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.buildFragment使用方法及思路分析
Jan 07 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
Dojo获取下拉框的文本和值实例代码
May 27 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
通过AngularJS实现图片上传及缩略图展示示例
Jan 03 Javascript
Bootstrap页面标题Page Header的实现方法
Mar 22 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
layui实现下拉框三级联动
Jul 26 Javascript
图解JS原型和原型链实现原理
Sep 15 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
使用python实现strcmp函数功能示例
2014/03/25 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
css3的transition属性详解
2014/12/15 HTML / CSS
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
单位单身证明范本
2014/01/11 职场文书
市场营销工作计划书
2014/05/06 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
个人委托书怎么写
2014/09/17 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
庆六一开幕词
2015/01/29 职场文书
老乡聚会通知
2015/04/23 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
Django框架之路由用法
2022/06/10 Python