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 相关文章推荐
页面中iframe相互传值传参
Dec 13 Javascript
比Jquery的document.ready更快的方法
Apr 28 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
JavaScript+H5实现微信摇一摇功能
May 23 Javascript
VUE脚手架具体使用方法
May 20 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 Javascript
原生js实现贪吃蛇游戏
Oct 26 Javascript
js删除对象中的某一个字段的方法实现
Jan 11 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代码优化及php相关问题总结
2006/10/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
Javascript实现Web颜色值转换
2015/02/05 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
js实现动态时钟
2020/03/12 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python抓取网页图片示例(python爬虫)
2014/04/27 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
python实现二维数组的对角线遍历
2019/03/02 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
一个C/C++编程面试题
2013/11/10 面试题
物流仓储实习自我鉴定
2013/09/25 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
后勤主管工作职责
2013/12/07 职场文书
员工评语大全
2014/01/19 职场文书
全神贯注教学反思
2014/02/03 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
优秀会计求职信
2014/07/04 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
检讨书范文大全
2015/05/07 职场文书