关注
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 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 聊聊这家公司值得去吗 #
226095次浏览 2130人参与
# 硬件人你反向读研了吗 #
41645次浏览 629人参与
# 为了找工作你投递了多少公司? #
6835次浏览 86人参与
# 工作一周年分享 #
26674次浏览 126人参与
# 一人一个landing小技巧 #
77307次浏览 1106人参与
# kpi面有什么特征 #
28660次浏览 153人参与
# 入职第一天,你准备什么时候下班 #
54874次浏览 350人参与
# 小米提前批笔试难吗 #
33174次浏览 352人参与
# 正在实习的你,几点下班 #
156391次浏览 1086人参与
# 担心入职之后被发现很菜怎么办 #
126035次浏览 749人参与
# 一人推荐一个机械人值得去的公司 #
403270次浏览 4137人参与
# 毕业论文怎么查AI率 #
43067次浏览 1891人参与
# 夸夸我的求职搭子 #
192237次浏览 1898人参与
# 校招入职后的感受 #
275000次浏览 2669人参与
# 投格力的你,拿到offer了吗? #
82495次浏览 573人参与
# Tplink求职进展汇总 #
130366次浏览 728人参与
# 体制内上岸心路历程 #
26572次浏览 212人参与
# 华为池子有多大 #
87627次浏览 689人参与
# 产品每日一题 #
43564次浏览 563人参与
# tplink提前批进度交流 #
162390次浏览 1375人参与