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 相关文章推荐
JSON扫盲帖 JSON.as类教程
Feb 16 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
Nov 23 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
JavaScript中split与join函数的进阶使用技巧
May 03 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
在Vue 中使用Typescript的示例代码
Sep 10 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
Sep 20 Javascript
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
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常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
js日期联动示例
2014/05/02 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
Node.js简单入门前传
2017/08/21 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
学习node.js 断言的使用详解
2019/03/18 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
python检测服务器是否正常
2014/02/16 Python
进一步了解Python中的XML 工具
2015/04/13 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
学校运动会感想
2015/08/10 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
MySQL update set 和 and的区别
2021/05/08 MySQL
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis