关注
let str = 'B->A C->A D->B D->C D->E' //[A-B] [A-C] [B-D] [C-D] [E-D]
//[A,E][B,C][D]
let list = str.split(' ')
list = list.map(item=> item.split('->').reverse())
let result = [[]]
list.forEach( item=> {
let start = item[0]
let end = item[1]
let index1 = result.findIndex( item => { return item.includes(start)})
let index2 = result.findIndex( item => { return item.includes(end)})
//start和end都不存在
if(index1 == -1 && index2 == -1){
result[0].push(start)
if(!result[1]){
result[1] = []
}
result[1].push(end)
}else if( index1 == -1 && index2 > -1) { //start不存在 end存在
result[0].push(start)
}else if( index1 > -1 ) { //start存在
result = result.map( item => item.filter(el=> el!=end)) //去掉end 再插入end
if(!result[index1+1]){
result[index1+1] = []
}
result[index1+1].push(end)
}
})
let arr = []
result.forEach( item => {
arr = [...arr, ...item.sort()]; //同一层级默认字母排序
})
console.log(arr.join(' '))
查看原帖
1 评论
相关推荐
昨天 11:04
西安电子科技大学 C++ 点赞 评论 收藏
分享
05-11 12:05
中国矿业大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 聊聊这家公司值得去吗 #
234799次浏览 2192人参与
# kpi面有什么特征 #
32994次浏览 229人参与
# 你认为哪个岗位找工作最卷 #
13510次浏览 44人参与
# 职场人,说说你的烦心事 #
8666次浏览 75人参与
# 一人一个landing小技巧 #
79358次浏览 1125人参与
# 职场上哪些事情令人讨厌 #
16729次浏览 84人参与
# 秋招最大的收获是什么? #
33912次浏览 299人参与
# 小红书求职进展汇总 #
56136次浏览 486人参与
# 聊聊你的职场新体验 #
157487次浏览 1369人参与
# 机械制造岗投递时间线 #
22752次浏览 346人参与
# 职场吐槽大会 #
205524次浏览 1636人参与
# 研究所VS国企,该如何选 #
180655次浏览 1769人参与
# 为了找工作你投递了多少公司? #
10162次浏览 141人参与
# 大家每天通勤多久? #
42024次浏览 329人参与
# 通信硬件牛牛的实习日记 #
7186次浏览 65人参与
# 职场破防瞬间 #
234964次浏览 2125人参与
# 总结:哪家公司面试体验感最好 #
47663次浏览 338人参与
# tplink提前批进度交流 #
162771次浏览 1378人参与
# 找工作前vs找工作后的心路变化 #
9597次浏览 103人参与
# 担心入职之后被发现很菜怎么办 #
126482次浏览 755人参与