大家好这里是清隆学长 ,一枚热爱算法的程序员
✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解
ACM银牌| 多次AK大厂笔试 | 编程一对一辅导
感谢大家的订阅➕ 和 喜欢
=> URL拼接(100分) <=
评测功能需要 =>订阅专栏<= 后联系清隆解锁~
给定一个 的前缀和后缀,需要将它们拼接成一个完整的 。拼接规则如下:
'/'
,需要自动在中间补上 '/'
连接符。'/'
,需要自动去重,即只保留一个 '/'
。Tips: 不用考虑前后缀 不合法的情况。
输入一行,包含两个字符串,表示 的前缀和后缀,两个字符串之间用英文逗号 ','
分隔。
输出一行,表示拼接后的完整 。
acm,/bb
acm/bb
/abc,/bcd
/abc/bcd
/acd,bef
/acd/bef
,
/
这是一道字符串拼接的题目。我们需要根据题目描述中给出的拼接规则,将 的前缀和后缀拼接成一个完整的 。
具体步骤如下:
'/'
,并记录结果。'/'
,并记录结果。'/'
,且后缀的开头也不为 '/'
,则在拼接时需要在两者之间补上一个 '/'
。'/'
,且后缀的开头也为 '/'
,则在拼接时需要去掉一个 '/'
,避免重复。时间复杂度 ,其中 为 前缀和后缀的总长度。空间复杂度 。
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)
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);
}
}
}
#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机试算法题库#