最近在找工做,老是被問到像對括號這樣的數據,怎麼判斷它是否有效,寫一個方法,判斷它是否有效? 因此,今天就寫一個貼上吧,我沒有考慮什麼場景,就是一個基本的實現javascript
function brackets(str) {
var strArr = str.split('');
function decide(type) {
switch(type) {
case '(':
return 1;
case '[':
return 2;
case '{':
return 3;
case ')':
return -1;
case ']':
return -2;
case '}':
return -3;
default:
break;
}
}
var arr = [], flag = true;
strArr.map(item => {
var num = decide(item);
if (num > 0) {
arr.push(num);
} else {
var prev = arr.pop();
if (Number(prev + num)) {
flag = false;
}
}
})
return flag
}
var str1 = '{{{{}}}([)]}';
var str2 = '{{{{}}}[()]}';
brackets(str1) // 返回false
brackets(str2) // 返回true
複製代碼
寫這個的主要目的是爲了方便往後本身的查看,固然若是某位同窗有更好的看法,也不防告訴我java