-
Notifications
You must be signed in to change notification settings - Fork 1
/
01-trie-tree.js
78 lines (73 loc) · 2.76 KB
/
01-trie-tree.js
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var pinyin = require("pinyin");
let fruit = `苹果,梨,葡萄,提子,枣,柑橘,西柚,
桃,西瓜,杏,荔枝,甘蔗,柿,柠檬,香蕉,芒果,菠萝,哈密瓜,李子,
石榴,枸杞,山楂,椰子,桑葚,草莓,木瓜,龙眼,
枇杷,山竹,红毛丹,无花果,杨桃,猕猴桃,杨梅,蓝莓,
西梅,释迦,百花果,樱桃,榴莲,火龙果,菠萝蜜,百香果,罗汉果,莲雾
`
let vegetable = `
菠菜,韭菜,花菜,西兰花,白菜,芹菜,辣椒,西红柿,香菜,
木耳,蒜苔,油菜,生菜,蒜苗,茼蒿,芥菜,油菜
紫甘蓝,娃娃菜,空心菜,
香菇,草菇,平菇,金针菇,杏鲍菇,
冬瓜,南瓜,黄瓜,丝瓜,苦瓜,
大葱,生姜,洋葱,山药,芋头,魔芋,红薯,土豆,莲藕,胡萝卜,萝卜,
银耳,玉米,芦笋,竹笋,茴香,茄子,番茄,豌豆芽
`
let animal = `
熊猫,象,豹子,老虎,猫头鹰,孔雀,羊驼,山羊,河马,牛,斑马,猴子,
熊,老鹰,骆驼,狮子,龟,兔子,考拉,袋鼠,犀牛,蜥蜴,长尾猴,猩猩,金丝猴,
长颈鹿,梅花鹿,马,羚羊
`
let obj ={}
function parse(str,name){
let ret = [...new Set(str.replace(/\n/g,'').split(','))]
ret = ret.map(item=>{
let pin = pinyin(item,{
style: pinyin.STYLE_NORMAL,
})
let p = pin[0]
if(p in obj){
if(obj[p][name]){
obj[p][name].push(item)
}else{
obj[p][name] = [item]
}
}else{
obj[p] = {
[name]:[item]
}
}
return pin
})
}
parse(animal,'动物园')
parse(vegetable,'菜园')
parse(fruit,'果园')
Object.keys(obj).forEach((key)=>{
let item = obj[key]
if(Object.keys(item).length===3){
console.log(key,'开头的',item)
}
})
console.log('*'.repeat('50'))
console.log('备选几个偏门的',{
'动物园':'穿山甲,鸭嘴兽,娃娃鱼',
'菜园':'苦菊,豌豆苗,茴香',
'果园':'莲雾,释迦,蛇皮果',
})
let ret = `
xiang 开头的 { '动物园': [ '象' ], '菜园': [ '香菇', '香菜' ], '果园': [ '香蕉' ] }
yang 开头的 { '动物园': [ '羊驼' ], '菜园': [ '洋葱' ], '果园': [ '杨桃', '杨梅' ] }
shan 开头的 { '动物园': [ '山羊' ], '菜园': [ '山药' ], '果园': [ '山楂', '山竹' ] }
luo 开头的 { '动物园': [ '骆驼' ], '菜园': [ '萝卜' ], '果园': [ '罗汉果' ] }
xi 开头的 {
'动物园': [ '犀牛', '蜥蜴' ],
'菜园': [ '西兰花', '西红柿' ],
'果园': [ '西柚', '西瓜', '西梅' ]
}
xing 开头的 { '动物园': [ '猩猩' ], '菜园': [ '杏鲍菇' ], '果园': [ '杏' ] }
**************************************************
备选几个偏门的 { '动物园': '穿山甲,鸭嘴兽,娃娃鱼', '菜园': '苦菊,豌豆苗,茴香', '果园': '莲雾,释迦,蛇皮果' }
注意xi开头的,还有xing和xiang
`