序言:早上起来,按照昨天的计划,看数据结构,上课期间没学习好,这不去公司培训了,发现其重要性,趁做毕业设计的时间好好的学习一些基础知识。

不得不说的是对于软件的童鞋来说,基础仍然是重要的。

不多说,进入正题,在看数据结构遇到的一个问题,其问题是:

判断一个字符串中圆括号是否平衡并乔好匹配。

我的思路:当我遇到一个问题的时候,我就开始分析这个问题,深入了解这个问题,常做的事就是在纸上画画写写。

1.要知道左右括号要匹配必须左括号的个数是等于右括号个数,这就是解决该问题的算法。

2.要判断一个字符串中括号是否匹配那就得读取每一个字符串,得使用到js中的String对象中的一个方法charAt(i)。

3.通过循环读取字符串中的每一个字符,判断字符是左括号,则leftNum++;如果是右括号,则leftNum--。

4.最后通过leftNum是否为零来判断左右括号是否平等。

以下是我使用js实现的代码:

// isBracketBalance(str)函数是一个用于判断字符串中括号是否平衡匹配的函数// @prarmeter: str是将要被判断的字符串// 如果匹配返回true// 如果不匹配则返回falsefunction isBracketBalance(str){var leftBracketNum = 0,  // 用于保存左括号个数的变量strLength = str.length; // 把字符串的长度付给一个变量增加程序的性能// 通过for循环来读取字符串中的一个一个的字符for(var i = 0; i < strLength; i++){var temp = str.charAt(i); // 付给临时变量增加程序的性能if(temp === '(') // 如果是左括号,则leftBracketNum++
            {leftBracketNum++;}if(temp === ')') // 如果是右括号,则leftBracketNum--
            {leftBracketNum--;}}// 最后判断leftBracketNum,如果为0表示平衡否则不平衡if(leftBracketNum === 0){return true;}else{return false;}}

当写完以上代码后,我想做做测试,不得不人工的写个字符串来测试,这很麻烦,我就想到自动化(我也是刚学,也不知这是不是自动化)  

思路:使用js的随机函数,从而随机的取左括号或者右括号,拼凑成一个字符串,调用isBracketBalance(str)函数。

以下是我使用js写的自动化测试isBracketBalance(str)的代码:

// 自动化测试// 写一个随机的只包括括号的字符串// 其个数也是随机的,自动化测试100遍// 打印出测试过程中不匹配的字符串function autoTest(){var errorNum = 0; // 用于保存错误个数// 自动化测试100遍for(var i = 0; i < 100; i++){var len = Math.floor(Math.random()*100), // 字符串取0~100之间的任意长度str = []; // 用于保存随机取得的括号,最后作为测试的对象// for循环取括号的随机值for(var j = 0; j < len; j++){if(Math.floor((Math.random()*100)) % 2 == 0){str.push('(');}else{str.push(')');}}str = str.join('');if(isBracketBalance(str) == false){console.log(str);errorNum++;}}console.log(errorNum);}

遇到的问题:autoTest()局限性,测试的数量是有限的,测试为什么绝大多数是false。

测试的打印结果:

感悟:每天使用自己熟练的program language去解决一个问题,我觉得这是编程提升的一个方法。深入的挖掘将是更进一步的提升。我发现c++能做更多的事,能更方便的做事,这使得我更加的想多学学c++知识。

转载于:https://www.cnblogs.com/youshaohua/archive/2013/04/29/js-for-bracket-balance.html

使用js对来判断一个字符串中括号是否平衡匹配相关推荐

  1. 用isalpha函数来判断一个字符串中的字符是否是字母

    今天刚学会了一个函数用来判断一个字符串中的字符是否为字母,函数名为isalpha,具体内容为下: 测试一个元素来包装区域设置是字母字符. 以带有颜色区分的格式查看 复制到剪贴板 template< ...

  2. 判断一个字符串中括号是否匹配

    从键盘读入一个字符串,其中只含有() {} [ ] ,判断该字符串中的每种括号是否成对出现. 提示:可借助栈来实现,括号必须配对出现,如()[ ]{},这是匹配的括号,如([{])},这是不匹配的括号 ...

  3. 判断一个字符串中的字符是否唯一

    http://www.cricode.com/254.html 实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构. (即只使用基本的数据结构) 首先,你可以问面试官, ...

  4. php判断一个字符串是否为纯数字,php判断变量是否为纯数字字符串的方法

    在php中有时候需要判断一个变量的值是否为数字或是否为数字字符串,而php中也提供了一个很好用的内置函数 is_numeric(),可以很轻松的来检测变量. php is_numeric() 函数介绍 ...

  5. java 判断正负数_Java判断一个字符串为数字(正负、小数)

    这些天因为工作上的需求,其中一个小环节是传来一个String类型的参数,需要判断该参数是否为数字(正负.正数小数都要能判断). 当走到这个环节时,首先想到的是isDigit()方法,具体不清楚是哪个类 ...

  6. Java判断一个字符串是否包含某个字符

    1 问题 如何利用Java通过不同的方法来判断一个字符串是否包含某个字符. 2 方法 .contains方法 这个是利用java.lang.String.contains() 方法返回true,当且仅 ...

  7. java判断一个字符串是否为数字型(整数、小数、负数)

    1.采用正则表达式的方式来判断一个字符串是否为数字,这种方式判断面比较全面,可以判断正负.整数小数 String str1="12354哈哈";String str2=" ...

  8. C++如何高效地判断一个字符串是数值?

    在C++中如何判断一个字符串是数值,有许多方法. 有些方法利用输出流对象,效率很低. 也有用_ttof(str)函数,它将字符串str转换成double类型的数.如果其参数str不是一个数,则返回0. ...

  9. JS统计一个字符串中数字字符的个数。

    ** JS统计一个字符串中数字字符的个数. ** 思路整理: 统计一个字符串中的数字字符个数,首先应该先遍历字符串中每一个单字符,然后对每个字符进行判断是否为数字,最后设置一个变量统计数目 具体实现: ...

最新文章

  1. VS Code上也能玩转Jupyter Notebook,这是一份完整教程
  2. 用ASP.NET AJAX 开发Web程序 — UpdatePanel篇
  3. OpencvSharp的踩坑之路
  4. 前后端交互json字符串
  5. 最优化课堂笔记03:整数规划
  6. 网络基础3(IP段格式,UDP数据报格式,TCP数据报格式)
  7. PHP foreach 小结
  8. 查询加索引oracle,指定索引/*+INDEX(TABLE INDEX_NAME)*/等优化Oracle查询效率的总结
  9. nginx 499 502 413 404 处理
  10. Realme首款5G手机真我X50官宣:支持SA/NSA双模5G
  11. 什么样的运营才是好运营?
  12. 使用Visual C#制作可伸缩个性化窗体
  13. python从入门到放弃百度云-Python从入门到放弃:概论
  14. 昆明钟英高中2021年高考成绩查询,昆明官渡钟英中学2021年排名
  15. windows下php mongodb 安装配置使用查询
  16. Python 四阶龙格库塔法求积分
  17. iphone抓包调试神器—Stream安装和使用
  18. 同济大学Openwrt路由器 ipv6教程(新手导向)
  19. 算法:买卖股票最佳时机(c++)
  20. 搜狐季报图解:营收1.93亿美元 盈利900万美元

热门文章

  1. vscode中装js解释器_h5学习记录(1)--vscode配置js开发环境
  2. JZOJ 5629. 【NOI2018模拟4.4】Map
  3. matlab中的矩阵
  4. 水木-机器学习推荐论文和书籍
  5. 博士生创新能力的培养点滴
  6. 2.4g 无线键鼠对码软件_无线路由器的2.4G和5G同时开速度有影响吗?
  7. win7网络的计算机名称,Win7指定的网络名不再可用快速解决教程
  8. python查找指定文件路径_Python寻找路径和查找文件路径的示例
  9. 无障碍开发(六)之ARIA在HTML中的使用规则
  10. Vue源码探究-事件系统