js判断字符串是否是嵌套结构

function inArray(arr,ele){
 	var len=arr.length;
 	for(var i=0;i<len;i++){
		if(ele===arr[i]){
			return true;
		}
	}
	return false;
 }

function isNest(rule,str){
	if(!(rule&&str)){
		return false;
	}
	var keys=[];
	var values=[];
	for(var key in rule){
		if(rule.hasOwnProperty(key)){
			keys.push(key);
			values.push(rule[key]);
		}
	}
	var chs=str.split("");
	var len=chs.length;
	var stack=[];
	for(var i=0;i<len;i++){
		if(inArray(keys,chs[i])){
			stack.push(rule[chs[i]]);
		}else{
			if(chs[i]===stack[stack.length-1]){
				stack.pop();
			}else if(inArray(values,chs[i])){
				return false;
			}
		}
	}
	return stack.length===0;
}
 var rule={'(':')','[':']','{':'}','<':'>'};
console.log(isNest(rule,"{{sdf(sd[]f)}s }"));
console.log(isNest(rule,"(sdffs"));
console.log(isNest(rule,"sdff)"));
console.log(isNest(rule,"(sdf{sdf}sdf)"));
console.log(isNest(rule,"(sdf}sdf"));
console.log(isNest(rule,"sdf(d{sdf)sd}"));
console.log(isNest(rule));
console.log(isNest());
console.log(isNest(rule,"sdf><(d{sdf)sd}"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值