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 相关文章推荐
javascript实现的DES加密示例
Oct 30 Javascript
jQuery无刷新切换主题皮肤实例讲解
Oct 21 Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 Javascript
javascript实现根据汉字获取简拼
Sep 25 Javascript
JavaScript注入漏洞的原理及防范(详解)
Dec 04 Javascript
vue按需加载组件webpack require.ensure的方法
Dec 13 Javascript
如何获取TypeScript的声明文件.d.ts
May 01 Javascript
js利用递归与promise 按顺序请求数据的方法
Aug 30 Javascript
element ui分页多选,翻页记忆的实例
Sep 03 Javascript
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
微信公众号网页分享功能开发的示例代码
May 27 Javascript
js面向对象编程OOP及函数式编程FP区别
Jul 07 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
用PHP制作的意见反馈表源码
2007/03/11 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
javascript 学习笔记(onchange等)
2010/11/14 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python设计模式之代理模式实例
2014/04/26 Python
Python常见数据类型转换操作示例
2019/05/08 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
Django封装交互接口代码
2020/07/12 Python
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
房屋租赁合同解除协议书
2014/10/11 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
《确定位置》教学反思
2016/02/18 职场文书
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang