javascript数据结构中栈的应用之符号平衡问题

 更新时间:2017年04月11日 14:46:42   作者:布瑞泽的童话  
这篇文章主要介绍了javascript数据结构中栈的应用之符号平衡问题,结合实例形式分析了javascript基于栈的形式实现对各种括号如<> {} [] ()等的匹配验证操作相关应用技巧,需要的朋友可以参考下

本文实例讲述了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数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • echarts 3D地图为区域自定义颜色的解决方法

    echarts 3D地图为区域自定义颜色的解决方法

    在Echarts中,我们很多时候是需要给自己想要的几个区域的地图进行颜色高亮,这篇文章主要给大家介绍了关于echarts 3D地图为区域自定义颜色的相关资料,需要的朋友可以参考下
    2021-08-08
  • 微信公众号平台接口开发 菜单管理的实现

    微信公众号平台接口开发 菜单管理的实现

    这篇文章主要介绍了微信公众号平台接口开发 菜单管理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 使用Xcache缓存器加速PHP网站的配置方法

    使用Xcache缓存器加速PHP网站的配置方法

    由于国内网站备案比较麻烦,所以笔者便把网站放到了香港。虽然网站免去了备案的困扰,但是从访问速度上来看,一般要比放于国内的网站慢2-3倍,所以便想办法对网站做了一些简单的优化,比如使用缓存系统来提升网站页面访问速度
    2017-04-04
  • 第五章之BootStrap 栅格系统

    第五章之BootStrap 栅格系统

    Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。本文给大家介绍BootStrap 栅格系统的相关资料,需要的朋友可以参考下
    2016-04-04
  • Bootstrap Fileinput 4.4.7文件上传实例详解

    Bootstrap Fileinput 4.4.7文件上传实例详解

    这篇文章主要为大家详细介绍了Bootstrap Fileinput 4.4.7文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • js设置function参数默认值(适合没有传参情况)

    js设置function参数默认值(适合没有传参情况)

    div+css模拟js信息框的类库时遇到一个问题当没有传递参数过去时自动使用提示信息作为窗口标题,具体的实现如下
    2014-02-02
  • 谈谈JavaScript中super(props)的重要性

    谈谈JavaScript中super(props)的重要性

    今天小编就为大家分享一篇关于谈谈JavaScript中super(props)的重要性,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • javascript实现页面的实时时钟显示示例

    javascript实现页面的实时时钟显示示例

    这篇文章主要介绍了javascript实现页面的实时时钟显示示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • JavaScript输入邮箱自动提示实例代码

    JavaScript输入邮箱自动提示实例代码

    这篇文章主要介绍了JavaScript输入邮箱自动提示实例代码,有需要的朋友可以参考一下
    2014-01-01
  • js列举css中所有图标的实现代码

    js列举css中所有图标的实现代码

    最近在做一个通用的配置模块。配置模块中必然要对系统的菜单、功能模块、权限资源等进行配置,为了更好的用户体验,图标是必不可少的!
    2011-07-07

最新评论