小红书【24正式批】测试&运维综合试卷-第一场
1.小红很喜欢刷小红书。她记录了一周七天每天刷小红书的开始时间和结束时间。请你帮小红计算她总共刷了多少分钟。
注:小红有可能在当天的凌晨12点后结束刷小红书!
输入描述 输入14行字符串,每两行代表一天的开始时间和结束时间。
保证开始时间一定迟于17:00,结束时间一定早于03:00(即小红在下午5点之后才会开始刷小红书,且一定会在凌晨3点前睡觉)。
输出描述 一个整数,代表小红总共刷小红书的时间。 题解
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int sum = 0;
for (int j = 0; j < 7; j++) {
String[] times = new String[2];
for (int i = 0; i < 2; i++) {
times[i] = in.next();
}
String[] split_sta = times[0].split(":");
String[] split_end = times[1].split(":");
if ((Integer.parseInt(split_end[0]) <= 23 && Integer.parseInt(split_end[0]) >= 17) || Integer.parseInt(split_end[0]) == 0) {
sum += (Integer.parseInt(split_end[0]) - Integer.parseInt(split_sta[0])) * 60 + Integer.parseInt(split_end[1]) - Integer.parseInt(split_sta[1]);
} else {
sum += (24 - Integer.parseInt(split_sta[0]) + Integer.parseInt(split_end[0])) * 60 + Integer.parseInt(split_end[1]) - Integer.parseInt(split_sta[1]);
}
}
System.out.println(sum);
}
2.小红书有一个推荐系统,可以根据用户搜索的关键词推荐用户希望获取的内容。现在给定小红的搜索记录(记录为分词后的结果),我们认为当一个单词出现的次数不少于3次时,该单词为“用户期望搜索的单词”,即称为关键词。请你根据小红的记录,输出小红的用户画像对应的所有关键词。
输入描述 一行字符串,仅由小写字母和空格组成。代表小红的搜索记录。
字符串长度不超过100000。
输出描述 小红所有的关键词。每行输出一个。你需要按照搜索频次从高到低输出。频次相同的,你需要按字典序升序输出。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String[] strings = s.split(" ");
HashMap<String, Integer> map = new HashMap<>();
for (String string : strings) {
if (!map.containsKey(string)) {
map.put(string, 1);
} else {
map.put(string, map.get(string) + 1);
}
}
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
list.removeIf(entry -> entry.getValue() < 3);
list.sort((e1, e2) -> {
if (e1.getValue().equals(e2.getValue())) {
return e1.getKey().compareTo(e2.getKey());
}
return e2.getValue().compareTo(e1.getValue());
});
for (Map.Entry<String, Integer> l:list){
System.out.println(l.getKey());
}
}
3.小红很喜欢前往小红书分享她的日常生活。已知她生活中有n个事件,分享第i个事件需要她花费ti的时间和hi的精力来编辑文章,并能获得ai的快乐值。小红想知道,在总花费时间不超过T且总花费精力不超过H的前提下,小红最多可以获得多少快乐值?
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int T = scanner.nextInt();
int H = scanner.nextInt();
int[][] dp = new int[H + 1][T + 1];
for (int i = 0; i < n; i++) {
int ti = scanner.nextInt();
int hi = scanner.nextInt();
int ai = scanner.nextInt();
for (int j = H; j >= hi; j--) {
for (int k = T; k >= ti; k--) {
dp[j][k] = Math.max(dp[j][k], dp[j - hi][k - ti] + ai);
}
}
}
int maxHappiness = 0;
for (int i = 0; i <= H; i++) {
for (int j = 0; j <= T; j++) {
maxHappiness = Math.max(maxHappiness, dp[i][j]);
}
}
System.out.println(maxHappiness);
scanner.close();
}
#小红书信息集散地#