算法

  • 解决问题的计算方法
  • 程序=数据结构+算法

判断括号是否闭合

思路:使用栈解决,遇到 ( 入栈,遇到 ) 出栈,栈空了合法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 判断括号是否闭合
* @param {String} str
*/
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
}
// 测试用例 true 闭合,false 未闭合
brackets('') // true
brackets('()()()()()') // true
brackets('((((()') // false
brackets('((()(())))') // true
brackets('(())))') // true

转换字符串为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);