前两天看见一道简单的笔试题,简单记录一下写法。
// 用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 是否符合条件