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下通过getList函数实现分页效果的代码
Sep 17 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
js实现获取鼠标当前的位置
Dec 14 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
vue获取form表单的值示例
Oct 29 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
JS轮播图的实现方法2
Aug 25 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 使用curl提交json格式数据
2013/06/29 PHP
php常见的魔术方法详解
2014/12/25 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
Python argv用法详解
2016/01/08 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
详解Python设计模式之策略模式
2020/06/15 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
网上开商店的创业计划书
2014/01/19 职场文书
给老师的检讨书
2014/02/11 职场文书
投资合作协议书范本
2014/04/17 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书