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 相关文章推荐
JQuery 学习技巧总结
May 21 Javascript
jQuery同步提交示例代码
Dec 12 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
three.js中文文档学习之如何本地运行详解
Nov 20 Javascript
Angular CLI在Angular项目中如何使用scss详解
Apr 10 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
详解vue中localStorage的使用方法
Nov 22 Javascript
解决node-sass偶尔安装失败的方法小结
Dec 05 Javascript
详解Vue.directive 自定义指令
Mar 27 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
Sep 25 Javascript
vue中使用echarts的示例
Jan 03 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 float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
js单例模式的两种方案
2013/10/22 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python subprocess模块详细解读
2018/01/29 Python
python最长回文串算法
2018/06/04 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
使用K.function()调试keras操作
2020/06/17 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
总经理岗位职责范本
2015/04/01 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
导游词之镜泊湖
2019/12/09 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python