Algorithm
本次题目由同事提供。
题目
已知字符串 str='abcdefg'
,求一个方法 unFlattenDeep(str) , 可以返回一个对象 Obj ,使 Obj.a.b.c.d.e.f.g = 1
思考
- 最暴力的方法,递归。
- 聪明点的方法,ES5 的 Array Reduce 方法。
我的解答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
var unFlattenDeep = function(Str) { var i = 0; var Obj = {}; var arr = Str.split('');
function setFirstChild(o, key) { if (i === arr.length - 1) { o[key] = 1; return; } else { o[key] = {}; }
setFirstChild(o[key], arr[++i]); }
setFirstChild(Obj, arr[i]);
return Obj; };
var Str = 'abcdefg';
console.log(unFlattenDeep(Str))
|
1 2 3 4 5 6 7 8 9 10 11
|
function unFlattenDeep(arr, obj) { return arr.reduce((o, k, i, a) => (o[k] = i === a.length - 1 ? 1 : {}), obj) && obj; }
let res = unFlattenDeep('abcd'.split(''), {});
console.log(res.a.b.c.d)
|
然后,同事说出了他的解法
Json 反序列化法
只需要把字符串处理成JSON 格式, 然后解析字符串即可。
(喷血)
Share && Review
想学机器学习只能再学一遍Python、Java、C++ ?
前端福利来了
从TensorFlow.js入手了解机器学习
https://mp.weixin.qq.com/s/gpMTMaCKQRJu13F-QK4NCA
Tips
本次没有。