饿了么笔试 饿了么笔试题 0328

笔试时间:2025年03月28日

历史笔试传送门:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题

题目:大小写转化

对于给定的由大小写字母混合构成的字符串s,下标从1开始,我们需要将每一个k的倍数位进行大小写转换(即对于第k,2*k...位),而对于其他位置,无论大小写,直接使用其ASCII码替换其在字符串中的位置(从1开始)。由于这样得到的字符串可能非常长,所以,我们一共会提出q次询问,每一次询问给定一个区间[l,r],您只需要输出这 个区间中的全部字符。

输入描述

第一行输入一个正整数k(1 ≤ k ≤ 10^5),代表进位倍数。

第二行输入一个长度为1 ≤ len(s) ≤ 10^6,由大小写字母构成的字符串s,代表需要进行操作的字符串。

第三行输入一个正整数q(1 ≤ q ≤ 100),代表询问次数。

此后q行,每行输入两个正整数l,r(1 ≤ l ≤ r ≤ len(s'))代表询问的区间。

在这里,len(s')代表操作全部完成后的字符串长度。除此之外,保证输出的字符数量不超过2x10^5

输出描述

对于每一次询问,新起一行。输出一个字符串,代表询问的区间中的全部字符。

样例输入

2

аABbсC

3

1 1

2 4

8 9

样例输出

9

7a6

9c

提示:根据题意,需要对 2,4,6 位进行大小写转换,转换后得到"aaBBcc"。随后,对于1,3,5位,使用其ASCII码替换其在字符串中的位置,最终得到字符串"97a66B99c"。

参考题解

C++:[此代码未进行大量数据的测试,仅供参考]

#include <bits/stdc++.h>
usingnamespacestd;
int main() {
    int k;
    cin >> k;
    string s;
    cin >> s;
    string t = "";
    for (int i = 0; i < s.length(); i++) {
        char ch = s[i];
        if ((i + 1) % k == 0) {
            if (isupper(ch)) t += tolower(ch);
            else t += toupper(ch);
        } 
        else t += to_string((int)ch);
    }
    int q;
    cin >> q;
    while (q-- > 0) {
        int lc, rc;
        cin >> lc >> rc;
        cout << t.substr(lc - 1, rc - lc + 1) << endl;
    }
    return0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int k = scanner.nextInt();
        String s = scanner.next();
        StringBuilder t = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if ((i + 1) % k == 0) {
                if (Character.isUpperCase(ch)) {
                    t.append(Character.toLowerCase(ch));
                } else {
                    t.append(Character.toUpperCase(ch));
                }
            } else {
                t.append((int) ch);
            }
        }

        int q = scanner.nextInt();
        while (q-- > 0) {
            int lc = scanner.nextInt();
            int rc = scanner.nextInt();
            System.out.println(t.substring(lc - 1, rc)); // substring(start, end) - end is exclusive
        }

        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

k = int(input())
s = input()
t = ""

for i in range(len(s)):
    ch = s[i]
    if (i + 1) % k == 0:
        if ch.isupper():
            t += ch.lower()
        else:
            t += ch.upper()
    else:
        t += str(ord(ch))

q = int(input())
for _ in range(q):
    lc, rc = map(int, input().split())
    print(t[lc - 1:rc])

第二题

题目:最小的m

给你一个数 n ,让你找到最小的 m ,使得 n 能被 m 整除(也就是n mod m = 0)且 n/m 是质数,若不存在符合要求的m输出0。

输入描述

第一行输入一个整数T,代表有T组测试数据。

接下来T行,每一行输入一个整数n1 ≤ T ≤ 100l ≤ n ≤ 10^9

输出描述

对于每组数据输出一行,代表最小的m,如果答案不存在输出 0。

样例输入

4

3

4

5

6

样例输出

1

2

1

2

参考题解

题目要我们找一个n的最小因数m,使得n/m是质数。不妨记n/m=x,可以想到当x是n的最大质因数时,n/x得到m就是所求答案,所以问题变成找一个数的最大质因数,直接暴力即可。

C++:[此代码未进行大量数据的测试,仅供参考]

#incl

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

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

04-27 21:45
已编辑
门头沟学院 全栈开发
入职还没开始鄙人实在无趣突然有一想法国产MCP&nbsp;OS邀你共建目前2/6有想法的可以私我,讲一下自己的情况,最好有相关经验,直接上手开发希望小步快跑,然后逐步完善OmniForge&nbsp;是一款基于MCP协议的大模型工具生态操作系统,致力于: 全能工具集成:为各类大模型提供标准化接口,快速接入工具链(如代码生成、法律分析、数据可视化等),实现“模型即服务”; 场景化一键部署:通过模块化封装,支持法律、医疗、编程等场景的工具组合包快速加载,降低行业落地门槛; 开发者共创平台:构建开放社区,让工具开发者、模型训练者、场景应用方无缝协作,形成“工具开发-协议适配-场景分发”的闭环生态。 协议中枢:内置MCP协议解析引擎,支持动态上下文管理、工具调用编排与资源调度; 低代码扩展:提供可视化工具注册界面与SDK,开发者仅需定义输入/输出规范即可接入新工具(参考OpenTiny低代码引擎&nbsp;); 智能路由:基于大模型意图识别,自动匹配场景化工具链(如AI&nbsp;Coding时联动代码检查、API生成、测试部署工具); 轻量沙箱:支持工具集的独立运行与权限隔离,保障复杂任务下的稳定性。 招募计划:寻找5位先锋开发者,组成一个六人团队,当然也希望后续会有越来越多的人加入进来 &nbsp;加入OmniForge的价值 技术前瞻性:深度参与协议层创新,掌握大模型工具化落地的核心方法论,我很早之前接触大模型,一直觉得让模型掌握人的工具才是消除幻觉的关键,在没有mcp这个说法之前就做过notetale项目(数学分析工具和模型的通讯协议),但是单一项目开发周期长,一个持久化的框架加生态才是保障; 生态影响力:成为项目联合发起人,未来主导子模块或垂直场景开发,现在通用工具调用模型很少,部署复杂,开源遥遥无期,国内相关产品寥寥,做开创者,不做跟风者; 行动号召 “从一行代码到一个生态”我们期待与您共同书写OmniForge的第一章:&nbsp;&nbsp; 星辰大海,始于此刻。——&nbsp;OmniForge&nbsp;创始团队
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务