2023 饿了么笔试题 0817

笔试时间:2023年8月17日 秋招

第一题

题目:小红等外卖

小红在饿了么上面点了一个外卖,饥肠辘辘的她等骑手等得望眼欲穿。

已知小红在时刻t1点了外卖,饿了么上面显示预计送达时间为t2,实际送达时间为t3。请你判断外卖是否超时?

输入描述

第一行输入一个正整数t,代表询问次数。接下来的3*t行,每 3 行代表一次询问:第一行为点外卖的时刻t1,第二行为预计送达时间t2,第三行为实际送达时间t3。

保证骑手送外卖的预期花费时间和实际花费时间均不超过 2 小时。

1<=t<=100

输出描述

输出t行。如果超时则输出"Yes",否则输出"No"。

样例输入

3

18:00

19:05

19:05

23:00

00:21

00:23

23:05

00:05

23:58

样例输出

No

Yes

No

参考题解

这里使用内置的时间类模拟。主要是要处理超过了00:00的情况,如果t2和t3的时间差超过了2小时(题目说了不会超过2小时),那么则判断 t2和t1的差值  是否 大于等于 t3和t1的差值即可。

C++:

#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;

int main() {
    int t;
    cin >> t;
    cin.ignore(); // Consume newline character
    for (int i = 0; i < t; i++) {
        struct tm t1, t2, t3;
        string timeStr;

        getline(cin, timeStr);
        strptime(timeStr.c_str(), "%H:%M", &t1);

        getline(cin, timeStr);
        strptime(timeStr.c_str(), "%H:%M", &t2);

        getline(cin, timeStr);
        strptime(timeStr.c_str(), "%H:%M", &t3);

        time_t diff1 = mktime(&t2) - mktime(&t3);
        time_t diff2 = mktime(&t1) - mktime(&t3);

        if (abs(diff1) <= 7200) {
            if (mktime(&t3) < mktime(&t2)) {
                cout << "Yes" << endl;
            } else {
                cout << "No" << endl;
            }
        } else {
            if (abs(diff2) >= abs(diff1)) {
                cout << "Yes" << endl;
            } else {
                cout << "No" << endl;
            }
        }
    }
    return 0;
}

Java:

import java.time.Duration;
import java.util.Scanner;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
     public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        sc.nextLine();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
        for (int i = 0; i < t; i++) {
            LocalTime t1 = LocalTime.parse(sc.nextLine(), formatter);
            LocalTime t2 = LocalTime.parse(sc.nextLine(), formatter);
            LocalTime t3 = LocalTime.parse(sc.nextLine(), formatter);
            if (Math.abs(Duration.between(t2,t3).toHours()) <= 2) {
                if (t3.isAfter(t2)) System.out.println("Yes");
                else System.out.println("No");
            }
            else {
                if (Math.abs(Duration.between(t1,t3).toHours()) >= Math.abs(Duration.between(t1,t2).toHours()))
                    System.out.println("Yes");
                else System.out.println("No");
            }
        }
    }
}

Python:

from datetime import datetime

t = int(input())
for i in range(t):
    t1 = datetime.strptime(input(), "%H:%M")
    t2 = datetime.strptime(input(), "%H:%M")
    t3 = datetime.strptime(input(), "%H:%M")

    diff1 = (t2 - t3).total_seconds()
    diff2 = (t1 - t3).total_seconds()

    if abs(diff1) <= 7200:
        if t3 < t2:
            print("Yes")
        else:
            print("No")
    else:
        if abs(diff2) >= abs(diff1):
            print("Yes")
        else:
            print("No")

第二题

题目:小红的字符串构造

小红拿到了一个字符串s,她准备构造一个和t长度相同的字符串t:满足以下条件:

1.t的字符集和s的相同(去重后的,也就是说不考虑数量)

2.t的每个位置的字符都和s不同。

例如若 s="aabbc",那么t可以构造为"cbaca"。

你能帮帮小红吗?

输入描述

输入一个仅由小写字母组成的字符串s,长度不超过 200000。

输出描述

如果无解,请输出 -1。否则输出任意合法的字符串。

样例输入

aabbc

样例输出

cbaca

"bcacb"等字符串也是合法的构造。

参考题解

首先将s的字符统计,然后按照规则不重复的将字符填进新字符。

注意点:1.尽量使用没使用过的字符  2.如果所有字符都使用过,则只需要考虑不重复即可。

C++:

#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;

int main() {
    string s;
    getline(cin, s);

    unordered_set<char> charSet;

    for (char c : s) {
        charSet.insert(c);
    }

    string t(s.length(), ' ');

    int pos = 0;
    unordered_set<char> used;

    for (int j = 0; j < s.length(); j++) {
        if (used.size() != charSet.size()) {
            for (char c : charSet) {
                if (charSet.count(c) && !used.count(c) && c != s[j]) {
                    t[j] = c;
  

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论

相关推荐

04-19 11:59
门头沟学院 Java
卷不动辣24314:挂,看来不该投这个部门的
点赞 评论 收藏
分享
评论
2
8
分享

创作者周榜

更多
牛客网
牛客企业服务