vgarbuzov

JS check braces pairs

Jul 22nd, 2021
1,040
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. function checkBracesPairs(src = '') {
  3.   const openBraceList = '({[<'.split('')
  4.   const findOpenBrace = closeBrace => {
  5.     if (closeBrace === ')') return '('
  6.     if (closeBrace === ']') return '['
  7.     if (closeBrace === '}') return '{'
  8.     if (closeBrace === '>') return '<'
  9.   }
  10.  
  11.   const isOpenBrace = ch => openBraceList.includes(ch)
  12.   const srcAsArray = src.split(' ').join('').split('')
  13.  
  14.   const history = []
  15.   for (let i = 0; i < srcAsArray.length; i++) {
  16.     const ch = srcAsArray[i]
  17.     if (isOpenBrace(ch)) {
  18.       history.push(ch)
  19.     } else {
  20.       const lastBrace = history.pop()
  21.       if (findOpenBrace(ch) !== lastBrace) {
  22.         console.log('-')
  23.         return false
  24.       }
  25.     }
  26.   }
  27.  
  28.   console.log(history.length === 0 ? '+' : '-')
  29.   return history.length === 0
  30. }
  31.  
  32. const src01 = '<<>>'      // +
  33. const src02 = '><<>'      // -
  34. const src03 = '<<<>>'     // -
  35. const src1 = '<<(<>>'     // -
  36. const src2 = '(){}[]<>'   // +
  37. const src3 = '<<(<>)>>'   // +
  38. const src4 = '<<(<)>>>'   // -
  39. const src5 = ' ( { ) } '  // -
  40. const src6 = ' ( { } ) '  // +
  41.  
  42. checkBracesPairs(src01)
  43. checkBracesPairs(src02)
  44. checkBracesPairs(src03)
  45. checkBracesPairs(src1)
  46. checkBracesPairs(src2)
  47. checkBracesPairs(src3)
  48. checkBracesPairs(src4)
  49. checkBracesPairs(src5)
  50. checkBracesPairs(src6)
  51.  
RAW Paste Data