括号匹配
function validBraces(str
){
if(str
.length
< 2 || str
.length
% 2!=0){
if(!str
.length
){
return true;
} else {
return false;
}
}
let count
= 0;
let length
= str
.length
;
while(count
< length
/ 2){
str
= str
.replace(/[(][)]/g,'').replace(/\{}/g,'').replace(/\[]/g,'');
count
++;
}
if(str
.length
=== 0){
return true;
} else{
const obj
= {
'(': ')',
'[': ']',
'{': '}',
};
const strArry
= str
.split('');
let num
= 0;
for (let i
= 0 ;i
<strArry
.length
- 1 ;i
++){
const keys
= Object
.keys(obj
);
if (i
< strArry
.length
/ 2) {
if (obj
[strArry
[i
]] === strArry
[strArry
.length
- 1]){
num
++ ;
}
} else {
break;
}
}
if (num
=== strArry
.length
/ 2) {
return true;
} else {
return false;
}
}
}
输出结果如下:
如果字符串长度为奇数,则直接不匹配
var str1
= '(', str2
= ']',str3
= '{';
匹配括号相连的情况,都是单层没有嵌套的。
var str1
= '()[]{}()[]', str2
= '{(})[]', str3
= '[]{}()][';
如果存在嵌套的
var str1
= '[({()})]({}){[(]})',str2
= '[](){[]()}{}[()]',str3
= '[(){}[(])[]';
检查字符串是否具有相同数量的“x”和“o”。该方法必须返回布尔值并且不区分大小写。字符串可以包含任何字符。
function XO(str
) {
const reg = (str
, char
) => {
const r
= new RegExp(char
, 'gi');
const length
= str
.match(r
) ? str
.match(r
).length
: 0;
return length
;
}
str
= str
.toLowerCase();
return reg(str
, 'o') === reg(str
, 'x');
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-8479.html