最新华为OD机试真题-URL拼接(100分)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

=> URL拼接(100分) <=

华为OD

🌍 评测功能需要 =>订阅专栏<= 后联系清隆解锁~

🍓OJ题目截图

alt

🥮 URL拼接

问题描述

给定一个 的前缀和后缀,需要将它们拼接成一个完整的 。拼接规则如下:

  1. 如果前缀的结尾和后缀的开头都没有 '/',需要自动在中间补上 '/' 连接符。
  2. 如果前缀的结尾和后缀的开头都为 '/',需要自动去重,即只保留一个 '/'

Tips: 不用考虑前后缀 不合法的情况。

输入格式

输入一行,包含两个字符串,表示 的前缀和后缀,两个字符串之间用英文逗号 ',' 分隔。

输出格式

输出一行,表示拼接后的完整

样例输入

acm,/bb

样例输出

acm/bb

样例输入

/abc,/bcd

样例输出

/abc/bcd

样例输入

/acd,bef

样例输出

/acd/bef

样例输入

,

样例输出

/

数据范围

  • 前缀和后缀都是长度不超过 的字符串。

题解

这是一道字符串拼接的题目。我们需要根据题目描述中给出的拼接规则,将 的前缀和后缀拼接成一个完整的

具体步骤如下:

  1. 读取输入的 前缀和后缀。
  2. 判断前缀的结尾是否为 '/',并记录结果。
  3. 判断后缀的开头是否为 '/',并记录结果。
  4. 如果前缀的结尾不为 '/',且后缀的开头也不为 '/',则在拼接时需要在两者之间补上一个 '/'
  5. 如果前缀的结尾为 '/',且后缀的开头也为 '/',则在拼接时需要去掉一个 '/',避免重复。
  6. 将拼接后的结果输出即可。

时间复杂度 ,其中 前缀和后缀的总长度。空间复杂度

参考代码

  • 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在线评测

全部评论
评测功能需要 订阅专栏 后联系清隆解锁~
点赞
送花
回复 分享
发布于 07-01 15:22 浙江

相关推荐

1 1 评论
分享
牛客网
牛客企业服务