cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Soalan temuduga front-end, penyelesaian

题目: Sila berikan fungsi untuk menyemak padanan pasangan pendakap, kurungan dan kurungan

function isMatchingPair(str) {     
    // your code here 
}
 isMatchingPair('(str[x)xx]')  // return false 
 isMatchingPair('({[str]})')  // return true
習慣沉默習慣沉默2779 hari yang lalu645

membalas semua(5)saya akan balas

  • ringa_lee

    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;
    }

    balas
    0
  • 某草草

    某草草2017-05-19 10:20:37

    Padanan kurungan struktur tindanan.

    Kekalkan struktur tindanan, lintasi rentetan, dan bandingkan dengan bahagian atas tindanan semasa Jika bahagian atas tindanan dibiarkan, penyeberang adalah betul, dan kurungan adalah daripada jenis yang sama, ia akan disingkirkan. Bukan kurungan diabaikan.

    Selepas merentas, jika panjang tindanan 0, bermakna ada padan, jika tidak ia tidak sepadan.

    balas
    0
  • 给我你的怀抱

    给我你的怀抱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
        }

    balas
    0
  • 黄舟

    黄舟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

    balas
    0
  • 黄舟

    黄舟2017-05-19 10:20:37

    Wah, boleh tanya kat mana soalan temuduga masih rasa tak senang

    balas
    0
  • Batalbalas