关注
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 nodeB = relation.get(B);
if (nodeB == null) {
nodeB = new Node(B, null, 1);
relation.put(B, nodeB);
} else {
nodeB.degree++;
}
Node nodeA = relation.get(A);
if (nodeA == null) {
nodeA = new Node(A, nodeB, 0);
relation.put(A, nodeA);
} else {
nodeA.relation.add(nodeB);
}
}
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;
}
}
}
查看原帖
点赞 6
相关推荐
牛客热帖
更多
正在热议
更多
# 拿到offer之后,可以做些什么 #
20025次浏览 156人参与
# 硬件开发岗知多少 #
15376次浏览 121人参与
# 乐堡互娱校招 #
16151次浏览 224人参与
# 入职跑路最快的一次经历 #
20500次浏览 144人参与
# ___岗狗都不干,我干! #
9416次浏览 88人参与
# 校招谈薪技巧 #
32936次浏览 468人参与
# 思朗科技求职进展汇总 #
34409次浏览 268人参与
# 材料转码还有必要吗? #
27137次浏览 143人参与
# 面试时间长是好事吗? #
49658次浏览 378人参与
# 你会为了工作牺牲生活吗? #
39884次浏览 298人参与
# 小米编程考试 #
6245次浏览 97人参与
# 国企秋招,你投了吗? #
6749次浏览 63人参与
# 你在职场中沾染到的“坏”习惯 #
7553次浏览 82人参与
# 华为工作体验 #
227422次浏览 1274人参与
# 如何看待应届生身份? #
166417次浏览 1891人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
36910次浏览 497人参与
# 材料人的华为红黑体验 #
31778次浏览 178人参与
# 中兴工作体验 #
34769次浏览 298人参与
# 提名点击就挂的公司 #
45588次浏览 231人参与
# 面试被问第一学历差时该怎么回答 #
184392次浏览 1463人参与
# HR问:你期望的薪资是多少?如何回答 #
59401次浏览 617人参与