力扣题库之判断是否为有效括号

力扣题库之判断是否为有效字符串

// 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。			
			// 有效字符串需满足:

			// 左括号必须用相同类型的右括号闭合。
			// 左括号必须以正确的顺序闭合。
			// 注意空字符串可被认为是有效字符串。


			//思路 : 什么样的括号是合理的? 一组括号里面如果有其他的括号,那么也必须是一组或多组的 括号一定是成对出现的
			// ASCLL码表 :  各个括号的码值:   (:40     ,     ):41   ,  {:123  ,  }:125  ,   [:91  , ]:93
			var isValid = function(s) {
				//如果为空那么返回true
				if (s.length == 0) {
					return true;
				}
				//如果数组的长度时奇数,那么一定时不合法的
				if (s.length % 2 === 1) {
					return false;
				}
				//将字符串的每一项的括号转为ASCLL值,并插入新数组
				var arr = [];
				for (var j = 0; j < s.length; j++) {
					arr.push(s.charCodeAt(j))
				}
				// console.log(arr)
				var newArr = []
				//如果一开始就是右括号,返回false
				if(arr[0] == 41 || arr[0] == 93 || arr[0] == 125){
					return false;
				}
				//同理,如果最后一个是左括号,那么直接返回false
				if(arr[arr.length - 1] == 40 || arr[arr.length - 1] == 91 || arr[arr.length - 1] == 123){
					return false;
				}
				//遍历数组,如果是左括号,那么直接存入新数组,如果是右括号,则与最后存入新数组的括号相比较,
				for( var i = 0 ; i < arr.length ; i ++){
					
					
					if(arr[i] == 40 || arr[i] == 91 || arr[i] == 123){
						newArr.push(arr[i])
					}
					// console.log(newArr)
					// console.log(arr[i] - newArr[newArr.length - 1])
					if ((arr[i] == 41 || arr[i] == 93 || arr[i] == 125)  &&  (arr[i] - newArr[newArr.length - 1] == 1 || arr[i] - newArr[newArr.length - 1] == 2)) {
						newArr.pop()
						// console.log(newArr)
												
					}
					if(newArr.length == 0){
						return true
					}
				}
				return false
			}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值