关注
public class NIOTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Node> res = new ArrayList<>();
HashMap<String, Node> relation = new HashMap<>();
boolean flag = true;
while (sc.hasNext()) {
String str = sc.nextLine();
parse(str, relation);
if (str.charAt(str.length() - 1) != ',')
break;
}
while (!relation.isEmpty() && flag == true) {
flag = false;
Node node = null;
for (Map.Entry<String, Node> entry : relation.entrySet()) {
Node cur = entry.getValue();
if (cur.degree == 0) {
node = cur;
break;
}
}
if (node != null) {
for (Node temp : node.relation) {
temp.degree--;
}
res.add(node);
relation.remove(node.name);
flag = true;
}
}
for (Map.Entry<String, Node> entry : relation.entrySet()) {
res.add(entry.getValue());
}
Collections.sort(res, new Comparator<Node>() {
public int compare(Node a, Node b) {
return a.name.compareTo(b.name);
}
});
for (int i = 0; i < res.size() - 1; i++) {
boolean b = res.get(i).degree == 0 ? false : true;
System.out.println("{" + res.get(i).name + ", " + b + "},");
}
boolean b = res.get(res.size() - 1).degree == 0 ? false : true;
System.out.println("{" + res.get(res.size() - 1).name + ", " + b + "}");
}
public static void parse(String str, HashMap<String, Node> relation) {
String[] strs = str.split(",");
String A = strs[0].substring(1, strs[0].length());
String B = strs[1].substring(1, strs[1].length() - 1);
Node nodeA = relation.get(A);
if (nodeA == null) {
nodeA = new Node(A, null, 1);
relation.put(A, nodeA);
} else {
nodeA.degree++;
}
Node nodeB = relation.get(B);
if (nodeB == null) {
nodeB = new Node(B, nodeA, 0);
relation.put(B, nodeB);
} else {
nodeB.relation.add(nodeA);
}
}
public static class Node {
public String name;
public LinkedList<Node> relation = new LinkedList<>();
public int degree;
public Node (String name, Node relation, int degree) {
this.name = name;
if (relation != null)this.relation.add(relation);
this.degree = degree;
}
}
}
查看原帖
点赞 2
相关推荐
查看27道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招至今,你的战绩如何? #
1748次浏览 16人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
6632次浏览 34人参与
# MiniMax求职进展汇总 #
22173次浏览 282人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186109次浏览 1112人参与
# 网易游戏笔试 #
6195次浏览 83人参与
# 简历第一个项目做什么 #
31053次浏览 299人参与
# 巨人网络春招 #
10991次浏览 198人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
6589次浏览 153人参与
# 职能管理面试记录 #
10547次浏览 59人参与
# 简历中的项目经历要怎么写? #
308939次浏览 4122人参与
# 小红书求职进展汇总 #
226617次浏览 1354人参与
# 腾讯音乐求职进展汇总 #
160204次浏览 1103人参与
# 你的房租占工资的比例是多少? #
92076次浏览 896人参与
# 正在春招的你,也参与了去年秋招吗? #
362070次浏览 2629人参与
# AI时代,哪些岗位最容易被淘汰 #
61633次浏览 692人参与
# 你怎么看待AI面试 #
178885次浏览 1133人参与
# 机械求职避坑tips #
94353次浏览 567人参与
# 校招笔试 #
463956次浏览 2946人参与
# 面试官最爱问的 AI 问题是...... #
26303次浏览 810人参与
# 如何一边实习一边找下家? #
41503次浏览 355人参与
# 网易笔试 #
151640次浏览 790人参与
# 现在入门AI应该走哪些方向? #
8061次浏览 147人参与