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实现仿银行密码输入框效果的代码
Dec 13 Javascript
js 上传图片预览问题
Dec 06 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
详解jquery easyui之datagrid使用参考
Dec 05 Javascript
JS正则匹配中文的方法示例
Jan 06 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
Apr 18 Javascript
JavaScript实现换肤功能
Sep 15 Javascript
Vuex 进阶之模块化组织详解
Jan 12 Javascript
js统计页面上每个标签的数量实例代码
May 29 Javascript
浅谈微信小程序flex布局基础
Sep 10 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中date()日期函数有关参数整理
2011/07/19 PHP
php全角字符转换为半角函数
2014/02/07 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
js控制框架刷新
2008/08/01 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
Python用GET方法上传文件
2015/03/10 Python
Python实现在线程里运行scrapy的方法
2015/04/07 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Python处理文本换行符实例代码
2018/02/03 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
浅谈python常用程序算法
2019/03/22 Python
10款最好的Python开发编辑器
2019/07/03 Python
python3 深浅copy对比详解
2019/08/12 Python
python groupby 函数 as_index详解
2019/12/16 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
课改先进个人汇报材料
2014/01/26 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
视光学专业自荐信
2014/06/24 职场文书
2014年化验室工作总结
2014/11/21 职场文书
React中的Context应用场景分析
2021/06/11 Javascript