关注
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
相关推荐
点赞 评论 收藏
分享
01-26 01:02
常熟理工学院 C++ 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 脱下孔乙己长衫,浅聊一下就业下沉!2.5W
- 2... 美团java后端日常实习一二面1.7W
- 3... 腾讯后台开发-Hr部门(面试官特别不尊重人)1.2W
- 4... 腾讯PCG QQ后台开发一面9784
- 5... 腾讯/字节/快手 前端面经汇总9367
- 6... 实习入职第一天,应该做点啥❓6732
- 7... 【有奖互动】你问过DeepSeek什么意想不到的问题?6279
- 8... 双非努力了真的有用嘛4401
- 9... 大胆解读下任老的发言:我们大学生有哪些可以关注的❓4353
- 10... 腾讯实习基地-ieg-Level Infinite-一面4031
正在热议
更多
# 听劝,这个简历怎么改 #
14292次浏览 186人参与
# 面试被问“你的缺点是什么?”怎么答 #
6972次浏览 102人参与
# 水滴春招 #
17077次浏览 382人参与
# 入职第四天,心情怎么样 #
11471次浏览 64人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20567次浏览 414人参与
# 参加完秋招的机械人,还参加春招吗? #
27147次浏览 277人参与
# 租房找室友 #
8121次浏览 53人参与
# 职场新人生存指南 #
199485次浏览 5523人参与
# 读研or工作,哪个性价比更高? #
26239次浏览 356人参与
# 地方国企笔面经互助 #
18012次浏览 26人参与
# 简历无回复,你会继续海投还是优化再投? #
48708次浏览 561人参与
# 文科生还参加今年的春招吗 #
4148次浏览 31人参与
# 你见过最离谱的招聘要求是什么? #
144758次浏览 830人参与
# 如果重来一次你还会读研吗 #
155767次浏览 1706人参与
# 分享一个让你热爱工作的瞬间 #
15875次浏览 167人参与
# 机械人选offer,最看重什么? #
69087次浏览 449人参与
# 选择和努力,哪个更重要? #
44427次浏览 495人参与
# 你们的毕业论文什么进度了 #
901702次浏览 8968人参与
# 如果再来一次,你还会学硬件吗 #
103708次浏览 1246人参与
# 招聘要求与实际实习内容不符怎么办 #
47082次浏览 495人参与
# 第一份工作应该选高薪还是热爱? #
2642次浏览 57人参与