javascript - Question d'entrevue frontale, solution
習慣沉默
習慣沉默 2017-05-19 10:18:37
0
5
623

题目: 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
習慣沉默
習慣沉默

répondre à tous(5)
左手右手慢动作
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;
}
某草草

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.

给我你的怀抱
 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
    }
黄舟
// 主要考察的数组的栈操作
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
黄舟

Wow, puis-je demander où sont les questions de l'entretien ? Cela ne semble toujours pas facile

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal