算法
判断括号是否闭合
思路:使用栈解决,遇到 (
入栈,遇到 )
出栈,栈空了合法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
function brackets(str) { var arr1 = str.split('') var arr2 = [] for (let i = 0; i < arr1.length; i++) { if (arr1[i] === "(") { arr2.push("(") } else if (arr1[i] === ")") { arr2.pop() } } return !arr2.length }
brackets('') brackets('()()()()()') brackets('((((()') brackets('((()(())))') brackets('(())))')
|
转换字符串为json
entry
1
| const entry={"a.b.c.d":"dd","e":"ee","ab.ac.da.dc.ee":"end"};
|
output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| const output={ a:{ b:{ c:{ d:"dd" } } }, e:"ee", ab:{ ac:{ da:{ dc:{ ee:"end" } } } } }
|
思路:迭代对象,key
转换为数组,使用队列处理key数组
,判断最后一个直接赋值,其它赋值为:{}
1 2 3 4 5 6 7 8 9 10 11 12
| const output={} for(let key in entry){ const ar=key.split('.'); let p=output; while(ar.length){ const item=ar.shift(); p[item]=ar.length?{}:entry[key]; p=p[item]; } } console.log(output);
|