关注
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
相关推荐

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 工作中哪个瞬间让你想离职 #
28363次浏览 197人参与
# 在职场上,你最讨厌什么样的同事 #
16269次浏览 162人参与
# 选了这个offer,你有没有后悔? #
592973次浏览 4028人参与
# 小米硬件提前批进度交流 #
171100次浏览 1528人参与
# 哪些公司校招卡第一学历 #
74313次浏览 300人参与
# 机械人,秋招第一次笔试的企业是哪家? #
41108次浏览 326人参与
# 担心入职之后被发现很菜怎么办 #
139297次浏览 808人参与
# 入职以后才知道的校招谎言 #
88983次浏览 587人参与
# 华子oc时间线 #
1244992次浏览 6487人参与
# Offer比较,你最看重什么? #
192128次浏览 1309人参与
# 哪些公司开提前批了? #
29733次浏览 276人参与
# 风评不好的公司,你会去吗? #
65735次浏览 463人参与
# 两会劳动法放大招 #
76701次浏览 692人参与
# 实习如何「偷」产出? #
55783次浏览 1389人参与
# 职场常用语录大全 #
4060次浏览 30人参与
# 不卡学历的大厂有哪些? #
32467次浏览 245人参与
# 校招阶段,学历VS技术哪个更重要? #
19342次浏览 202人参与
# 机械人春招想让哪家公司来捞你? #
349549次浏览 3088人参与
# 除了主业以外,你还有哪些其他收入? #
13461次浏览 203人参与
# 工作丧失热情的瞬间 #
294411次浏览 2373人参与