Maison > Questions et réponses > le corps du texte
题目: Veuillez donner une fonction pour vérifier les paires d'accolades, parenthèses et crochets correspondantes
function isMatchingPair(str) {
// your code here
}
isMatchingPair('(str[x)xx]') // return false
isMatchingPair('({[str]})') // return true
ringa_lee2017-05-19 10:20:37
function isMatchingPair(str) {
var s = [];
var l = ['(','[','{'];
var r = [')',']','}'];
for(var i = 0; i< str.length; i++){
if(l.includes(str[i]))
s.push(r[l.indexOf(str[i])]);
if(r.includes(str[i]))
if(s.pop()!=str[i]){return false;}
}
return s.length?false:true;
}
某草草2017-05-19 10:20:37
Correspondance du support de structure de pile.
Maintenez une structure de pile, parcourez la chaîne et comparez-la avec le haut actuel de la pile. Si le haut de la pile est à gauche, le traverseur est à droite et les parenthèses sont du même type, elles sont éliminées. Les non-parenthèses sont ignorées.
Après le parcours, si la longueur de la pile est 0, cela signifie qu'il y a une correspondance, sinon elle ne correspond pas.
给我你的怀抱2017-05-19 10:20:37
function isMatchingPair(str){
var left = /\(|\{|\[/,right = /\)|\}|\]/,map={'(':')','{':'}','[':']'}
var stack = []
var ret = true
str.split('').forEach(function(e){
if(left.test(e)){
stack.push(e)
}else if(right.test(e)){
if(e === map[stack[stack.length - 1]]){
stack.pop()
}else{
ret = false
}
}
})
return ret && !stack.length
}
黄舟2017-05-19 10:20:37
// 主要考察的数组的栈操作
function isMatchingPair(str) {
let len = str.length;
var arr1 = []; // 左括号形成的数组
let arr2 = []; // 右括号形成的数组
let obj = {
'[': ']',
'(': ')',
'{': '}'
};
const reg1 = /[\[\(\{]+/gi;
const reg2 = /[\]\)\}]+/gi;
for (let i = 0; i < len; i++) {
if (reg1.test(str.charAt(i))) {
arr1.push(str.charAt(i))
} else if (reg2.test(str.charAt(i))) {
arr2.push(str.charAt(i))
}
}
console.log(arr1, arr2);
if (arr1.length != arr2.length) {
console.log(false);
return false;
}
for (let i = 0, len = arr1.length; i < len; i++) {
console.log(i, arr1, arr2);
if (obj[arr1.shift()] != arr2.pop()) {
console.log(false);
return false;
}
}
console.log(true);
return true;
}
isMatchingPair('(str[x)xx]'); // false
isMatchingPair('({[str]})'); // true
isMatchingPair('((((str[[[x))xx])))'); // false
isMatchingPair('(({{[[str]]}}))'); // true
黄舟2017-05-19 10:20:37
Wow, puis-je demander où sont les questions de l'entretien ? Cela ne semble toujours pas facile