实现一个函数 console.log(test(‘{[()]}‘)) // true console.log(test(‘{[(]]}‘)) // false

前两天看见一道简单的笔试题,简单记录一下写法。
// 用js实现一个以下功能的函数//
console.log(test(’{[()]}’)) // true
console.log(test(’{[(]]}’)) // false
console.log(test(’{]()]}’)) // false
console.log(test(’{()]}’)) // false

function test(s){

  if(s.length %2 !== 0){
    return false
  }
  let checkObj = {
    '(': ')',
    ')': '(',
    '[': ']',
    ']': '[',
    '{': '}',
    '}': '{'
  }
  let len = s.length
  let rstep = 0
  let lstep = 1
  for(let i = len/2; i< len; i++){
    let rItem = s[len/2 + rstep]
    let lItem = s[len/2 - lstep]
    
    if(checkObj[lItem] !== rItem){
      return false
    }
    rstep ++ 
    lstep ++ 
    // console.log('rItem', rItem, rstep ) 
    // console.log('lItem', lItem,  lstep) 
  }
  return true
}
// 用js实现一个以下功能的函数//
console.log(test('{[()]}'))  // true
console.log(test('{[(]]}'))  // false
console.log(test('{]()]}'))  // false
console.log(test('{()]}'))   // false

简单思路:
1.字符串长度不是偶数的retrun false
2.定义一个固定判断的对象checkObj
3.从字符串中间(len/2)位置开始向两边遍历
因为len为偶数所以len/2的位置是中间右边第一个
而左边第一个为的位置len/2 - 1
4.然后通过 checkObj[lItem] !== rItem 是否符合条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值