🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员
✨ 本系列打算持续跟新华为OD-C卷的三语言AC题解
💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导
👏 感谢大家的订阅➕ 和 喜欢💗
文章目录
- 前言
- 🎀关于华为OD
- 🧭 机试备考指南
- 📀 URL拼接(100分)
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 样例输入
- 样例输出
- 样例输入
- 样例输出
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- ✅AC代码截图
前言
🎀关于华为OD
- ✨华为OD的概念
华为的大部分社会招聘采用了被称为OD(Outsourcing Dispatch)模式,这是一种与德科共同进行的招聘方式。在这种模式下,被招聘的员工通常被定级在13至17级,这些员工被视为华为的储备人才。华为每年会从这些OD项目中选拔表现出色的员工,并将他们转为正式员工。 - ⌚️华为 OD 应聘流程
-
第一步:投递简历
- 提供姓名、邮箱、手机号、身份证号,用于锁定,所以投递前需要考虑清楚,投到项目组之后,一般不会转给另一个项目的 HR 了,也就是被锁定。
-
第二步:机试
- 3 道算法题,400 分满分,一般 1 个月的准备时间,华为机试必须要 300 分以上,没有过半年之后才能参加下一次考试。
-
第三步:技术面
- 2 轮技术面试。
-
第四步:HR 与主管面试
-
第五步:录用,发 offer
-
🧭 机试备考指南
-
华为OD的题库大半年跟新一次,也就是说,一旦跟新,那么本年用的题目就是从该题库种选题,大概有100~200道左右
-
最近考试换为C/D卷,C/D卷题库是一样的,D卷为双机位监控,某些外包公司应聘的为D卷。
-
为此清隆帮大家搜集并整理了C卷的题库,后续会由清隆的ACM银牌团队将题目整理后搬上OJ,支持在线评测。
📀 URL拼接(100分)
问题描述
给定一个 u r l url url 的前缀和后缀,需要将它们拼接成一个完整的 u r l url url。拼接规则如下:
- 如果前缀的结尾和后缀的开头都没有
'/'
,需要自动在中间补上'/'
连接符。 - 如果前缀的结尾和后缀的开头都为
'/'
,需要自动去重,即只保留一个'/'
。
Tips: 不用考虑前后缀 u r l url url 不合法的情况。
输入格式
输入一行,包含两个字符串,表示 u r l url url 的前缀和后缀,两个字符串之间用英文逗号 ','
分隔。
输出格式
输出一行,表示拼接后的完整 u r l url url。
样例输入
acm,/bb
样例输出
acm/bb
样例输入
/abc,/bcd
样例输出
/abc/bcd
样例输入
/acd,bef
样例输出
/acd/bef
样例输入
,
样例输出
/
数据范围
- u r l url url 前缀和后缀都是长度不超过 100 100 100 的字符串。
题解
这是一道字符串拼接的题目。我们需要根据题目描述中给出的拼接规则,将 u r l url url 的前缀和后缀拼接成一个完整的 u r l url url。
具体步骤如下:
- 读取输入的 u r l url url 前缀和后缀。
- 判断前缀的结尾是否为
'/'
,并记录结果。 - 判断后缀的开头是否为
'/'
,并记录结果。 - 如果前缀的结尾不为
'/'
,且后缀的开头也不为'/'
,则在拼接时需要在两者之间补上一个'/'
。 - 如果前缀的结尾为
'/'
,且后缀的开头也为'/'
,则在拼接时需要去掉一个'/'
,避免重复。 - 将拼接后的结果输出即可。
时间复杂度 O ( n ) O(n) O(n),其中 n n n 为 u r l url url 前缀和后缀的总长度。空间复杂度 O ( n ) O(n) O(n)。
参考代码
- Python
url = input().split(',')
prefix = url[0]
suffix = url[1]if not prefix and not suffix:print('/')
elif prefix.endswith('/') and suffix.startswith('/'):print(prefix + suffix[1:])
elif prefix.endswith('/') or suffix.startswith('/'):print(prefix + suffix)
else:print(prefix + '/' + suffix)
- Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] url = sc.next().split(",");String prefix = url[0];String suffix = url[1];if (prefix.isEmpty() && suffix.isEmpty()) {System.out.println("/");} else if (prefix.endsWith("/") && suffix.startsWith("/")) {System.out.println(prefix + suffix.substring(1));} else if (prefix.endsWith("/") || suffix.startsWith("/")) {System.out.println(prefix + suffix);} else {System.out.println(prefix + "/" + suffix);}}
}
- Cpp
#include <iostream>
#include <string>
using namespace std;int main() {string url, prefix, suffix;getline(cin, url, ',');prefix = url;getline(cin, suffix);if (prefix.empty() && suffix.empty()) {cout << "/" << endl;} else if (prefix.back() == '/' && suffix.front() == '/') {cout << prefix + suffix.substr(1) << endl;} else if (prefix.back() == '/' || suffix.front() == '/') {cout << prefix + suffix << endl;} else {cout << prefix + "/" + suffix << endl;}return 0;
}
✅AC代码截图
- 🍓 目前题目还在整理上传ing,需要抢先体验的联系清隆开通OJ账号,由于维护服务器需要成本💰,所以名额有限(暂不免费啦~)
-
AC代码
cpp
版本
-
AC代码
java
版本
-
AC代码
python
版本