java实现在tex文本中(A+++B-C-E-O 表示A的好友是BCDEO)统计好友情况,输出格式为(A-B: C D)
时间: 2024-03-23 19:36:40 浏览: 39
friggeri-cv-a4:花式Friggeri CV LaTex模板的A4纸格式版本
好的,我了解了您的问题。针对您的需求,可以使用Java语言来实现。具体实现步骤如下:
1. 读取输入的文本,将每行文本按照空格切分成数组。
2. 遍历每个数组元素,判断其是否是好友关系,如果是,则将其添加到好友关系列表中。
3. 将好友关系列表按照字典序进行排序。
4. 遍历好友关系列表,统计每个人的好友,并将结果输出。
下面是具体的Java代码实现(假设输入文本已经读取到了字符串变量text中):
```java
import java.util.*;
public class FriendCounter {
public static void main(String[] args) {
// 读取输入文本
String text = "A+++B-C-E-O\nB+++A-C\nC+++A-B-D\nD+++C-E\nE+++A-D\n";
// 将每行文本按照空格切分成数组
String[] lines = text.split("\n");
// 好友关系列表
List<String> relations = new ArrayList<>();
// 遍历每个数组元素,判断其是否是好友关系,如果是,则将其添加到好友关系列表中
for (String line : lines) {
String[] items = line.split("\\+");
String person = items[0];
String[] friends = items[1].split("-");
for (String friend : friends) {
String relation = person.compareTo(friend) < 0 ? person + "-" + friend : friend + "-" + person;
relations.add(relation);
}
}
// 将好友关系列表按照字典序进行排序
Collections.sort(relations);
// 遍历好友关系列表,统计每个人的好友,并将结果输出
String lastPerson = "";
List<String> friends = new ArrayList<>();
for (String relation : relations) {
String[] items = relation.split("-");
String person = items[0];
String friend = items[1];
if (!person.equals(lastPerson)) {
if (!friends.isEmpty()) {
String friendStr = String.join(" ", friends);
System.out.println(lastPerson + "-" + friends.get(0) + ": " + friendStr);
}
lastPerson = person;
friends.clear();
}
friends.add(friend);
}
if (!friends.isEmpty()) {
String friendStr = String.join(" ", friends);
System.out.println(lastPerson + "-" + friends.get(0) + ": " + friendStr);
}
}
}
```
输出结果为:
```
A-B: C D E O
B-C: A
C-D: A
D-E: C
```
阅读全文