返回目录
题目描述
给定一个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);
}
}
4 条评论
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]