返回目录

题目描述

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

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

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

输入描述

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

输出描述

拼接后的url

示例:

输人/acm/,/bb
输出/acm/bb
说明

Python算法源码

def get_result(prefix, suffix):
    # 从前缀中移除尾部斜杠
    prefix = prefix.rstrip('/')

    # 从后缀中移除开头斜杠
    suffix = suffix.lstrip('/')

    # 将前缀、'/' 和后缀连接到结果中
    result = prefix + '/' + suffix

    return result

if __name__ == "__main__":
    line = input()

    # 通过逗号分割输入
    arr = line.split(",")

    # 获取前缀和后缀
    prefix = arr[0] if len(arr) > 0 and len(arr[0]) > 0 else "/"
    suffix = arr[1] if len(arr) > 1 and len(arr[1]) > 0 else "/"

    # 获取结果
    result = get_result(prefix, suffix)

    print(result)

C语言算法源码

#include <stdio.h>
#include <stdlib.h> // 添加头文件以使用 malloc 和 free 函数
#include <string.h>

char* getResult(char* prefix, char* suffix) {
    // 从前缀中移除尾部斜杠
    int prefixLen = strlen(prefix);
    while (prefixLen > 0 && prefix[prefixLen - 1] == '/') {
        prefix[--prefixLen] = '\0';
    }

    // 从后缀中移除开头斜杠
    while (*suffix == '/') {
        suffix++;
    }

    // 为结果分配内存空间
    char* result = malloc(strlen(prefix) + strlen(suffix) + 2); // +2 用于 '/' 和空字符结尾
    if (result == NULL) {
        // 内存分配失败
        return NULL;
    }

    // 将前缀、'/' 和后缀连接到结果中
    strcpy(result, prefix);
    strcat(result, "/");
    strcat(result, suffix);

    return result;
}

int main() {
    char line[100];
    fgets(line, sizeof(line), stdin);
    line[strlen(line) - 1] = '\0'; // 移除换行符

    char* prefix = strtok(line, ",");
    char* suffix = strtok(NULL, ",");

    // 检查前缀或后缀是否为 NULL 或空字符串
    if (prefix == NULL || suffix == NULL || strlen(prefix) == 0 || strlen(suffix) == 0) {
        printf("/\n");
        return 0;
    }

    char* result = getResult(prefix, suffix);
    if (result == NULL) {
        // 内存分配失败
        return 1;
    }

    printf("%s\n", result);
  
    // 释放动态分配的内存
    free(result);

    return 0;
}

Java算法源码

import java.util.Scanner;

public class Main {
    public static String getResult(String prefix, String suffix) {
        // 从前缀中移除尾部斜杠
        prefix = prefix.replaceAll("/+$", "");

        // 从后缀中移除开头斜杠
        suffix = suffix.replaceAll("^/+", "");

        // 将前缀、'/' 和后缀连接到结果中
        String result = prefix + "/" + suffix;

        return result;
    }

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

        // 通过逗号分割输入
        String[] arr = line.split(",");

        // 获取前缀和后缀
        String prefix = (arr.length > 0 && !arr[0].isEmpty()) ? arr[0] : "/";
        String suffix = (arr.length > 1 && !arr[1].isEmpty()) ? arr[1] : "/";

        // 获取结果
        String result = getResult(prefix, suffix);

        System.out.println(result);
    }
}
最后修改:2024 年 04 月 03 日
如果觉得我的文章对你有用,请随意赞赏