最新华为OD机试真题-URL拼接(100分)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员
✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解
💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导
👏 感谢大家的订阅➕ 和 喜欢💗
📎在线评测链接
🌍 评测功能需要 =>订阅专栏<= 后联系清隆解锁~
🍓OJ题目截图
🥮 URL拼接
问题描述
给定一个 的前缀和后缀,需要将它们拼接成一个完整的 。拼接规则如下:
- 如果前缀的结尾和后缀的开头都没有
'/'
,需要自动在中间补上'/'
连接符。 - 如果前缀的结尾和后缀的开头都为
'/'
,需要自动去重,即只保留一个'/'
。
Tips: 不用考虑前后缀 不合法的情况。
输入格式
输入一行,包含两个字符串,表示 的前缀和后缀,两个字符串之间用英文逗号 ','
分隔。
输出格式
输出一行,表示拼接后的完整 。
样例输入
acm,/bb
样例输出
acm/bb
样例输入
/abc,/bcd
样例输出
/abc/bcd
样例输入
/acd,bef
样例输出
/acd/bef
样例输入
,
样例输出
/
数据范围
- 前缀和后缀都是长度不超过 的字符串。
题解
这是一道字符串拼接的题目。我们需要根据题目描述中给出的拼接规则,将 的前缀和后缀拼接成一个完整的 。
具体步骤如下:
- 读取输入的 前缀和后缀。
- 判断前缀的结尾是否为
'/'
,并记录结果。 - 判断后缀的开头是否为
'/'
,并记录结果。 - 如果前缀的结尾不为
'/'
,且后缀的开头也不为'/'
,则在拼接时需要在两者之间补上一个'/'
。 - 如果前缀的结尾为
'/'
,且后缀的开头也为'/'
,则在拼接时需要去掉一个'/'
,避免重复。 - 将拼接后的结果输出即可。
时间复杂度 ,其中 为 前缀和后缀的总长度。空间复杂度 。
参考代码
- 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;
}
#华为OD##华为##笔试##秋招##华为OD机试算法题库#最新华为OD机试-D卷 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD-C/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 提供OJ在线评测