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查找父节点的简单方法
Jun 28 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
May 24 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
js脚本分页代码分享(7种样式)
Aug 19 Javascript
jQuery.extend 函数及用法详细
Sep 06 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
Vue.js标签页组件使用方法详解
Oct 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获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
php strftime函数的详细用法
2018/06/21 PHP
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
大学生饮食配送创业计划书
2014/01/04 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
表彰先进的通报
2014/01/31 职场文书
营销经理工作检讨书
2014/11/03 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
2014年英语工作总结
2014/12/20 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
为Centos安装指定版本的Docker
2022/04/01 Servers