拼接url - 华为OD统一考试

OD统一考试

分值: 100分

题解: Java / Python / C++

拼接url - 华为OD统一考试_第1张图片

题目描述

给定一个 url 前缀和 url 后缀, 通过 “,” 分割, 需要将其连接为一个完整的 url 。

如果前缀结尾和后缀开头都没有 /,需要自动补上 / 连接符;

如果前缀结尾和后缀开头都为 /,需要自动去重;

约束: 不用考虑前后缀 URL 不合法情况。

输入描述

url 前缀(一个长度小于 100 的字符串),url 后缀 (一个长度小于100 的字符串)

输出描述

拼接后的url

示例1

输入:
acm,/bb

输出:
/acm/bb

示例2

输入:
/abc,/bcd

输出:
/abc/bcd

示例3

输入:
/acd,bef

输出:
/acd/bef

示例4

输入:
,

输出:
/

题解

字符串操作的问题,解法思路:

1、将 前缀 后多余的 / 去掉;

2、将 后缀 前多余的 / 去掉;

3、 连接输出结果。

Java

import java.util.Scanner;

/**
 * @author code5bug
 */

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();

        String[] line = input.split(",");

        // 找到前缀中最后一个非 / 的位置,作为前缀的结束位置
        String prefix = line[0];
        int r = prefix.length();
        while (r > 0 && prefix.charAt(r - 1) == '/') {
            r--;
        }

        // 找到后缀中第一个非 / 的位置,作为后缀的开始位置
        String suffix = line[1];
        int l = 0;
        while (l < suffix.length() && suffix.charAt(l) == '/') {
            l++;
        }

        // 拼接输出结果
        System.out.println(prefix.substring(0, r) + "/" + suffix.substring(l));
    }
}

Python

def fun():
    prefix, suffix = input().split(",")

    # 找到前缀中最后一个非 / 的位置,作为前缀的结束位置
    r = len(prefix)
    while r > 0 and prefix[r - 1] == '/':
        r -= 1

    # 找到后缀中第一个非 / 的位置,作为后缀的开始位置
    l = 0
    while l < len(suffix) and suffix[l] == '/':
        l += 1

    # 拼接输出结果
    print(f'{prefix[:r]}/{suffix[l:]}')


if __name__ == "__main__":
    fun()

C++

#include 
#include 

using namespace std;

int main() {
    string input;
    getline(cin, input);

    // 分割输入字符串
    size_t pos = input.find(",");
    string prefix = input.substr(0, pos);
    string suffix = input.substr(pos + 1);

    // 找到前缀中最后一个非 / 的位置,作为前缀的结束位置
    size_t r = prefix.length();
    while (r > 0 && prefix[r - 1] == '/') {
        r--;
    }

    // 找到后缀中第一个非 / 的位置,作为后缀的开始位置
    size_t l = 0;
    while (l < suffix.length() && suffix[l] == '/') {
        l++;
    }

    // 拼接输出结果
    cout << prefix.substr(0, r) + "/" + suffix.substr(l) << endl;

    return 0;
}

‍❤️‍华为OD机试面试交流群每日真题分享): 加V时备注“华为od加群”

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。

你可能感兴趣的:(华为od,算法,java,python,c++,面试,机试)