题目描述
给定一个url前缀和url后缀,通过,分割 需要将其连接为一个完整的url
- 如果前缀结尾和后缀开头都没有/,需要自动补上/连接符
- 如果前缀结尾和后缀开头都为/,需要自动去重
约束:不用考虑前后缀URL不合法情况
输入描述
url前缀(一个长度小于100的字符串),url后缀(一个长度小于100的字符串)
输出描述
拼接后的url
用例
输入 | /acm,/bb |
输出 | /acm/bb |
说明 | 无 |
输入 | /abc/,/bcd |
输出 | /abc/bcd |
说明 | 无 |
输入 | /acd,bef |
输出 | /acd/bef |
说明 | 无 |
输入 | , |
输出 | / |
说明 | 无 |
题目解析
逻辑题,可以直接看代码实现了解逻辑。
20230813 本题Java解法中split函数比较难搞,对于下面情况按照","分割出来的字符串数组分别是:
- "," => []
- "1," => ["1"]
- ",1" => ["", "1"]
我们需要注意处理下。
JS和Python的split函数就要规矩的多,上面三种输入情况,都会返回一个长度为2的字符串数组。
更新解法使用了正则表达式,其中
prefix前缀,需要将其结尾的多个/去除,使用正则 /+$ 来匹配结尾的多个/
suffix后缀,需要将其开头的多个/去除,使用正则 ^/+ 来匹配开头的多个/
最后拼接 prefix + "/" + suffix 即可
对于python而言,有更简单的lstrip和rstrip方法,实现同样效果。
Java算法源码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] arr = s.split(",");
String prefix = arr.length > 0 && arr[0].length() > 0 ? arr[0] : "/";
String suffix = arr.length > 1 && arr[1].length() > 0 ? arr[1] : "/";
System.out.println(getResult(prefix, suffix));
}
public static String getResult(String prefix, String suffix) {
prefix = prefix.replaceAll("/+$", "");
suffix = suffix.replaceAll("^/+", "");
return prefix + "/" + suffix;
}
}
JS算法源码
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
let [prefix, suffix] = line.split(",");
prefix = prefix.replace(//+$/, "");
suffix = suffix.replace(/^/+/, "");
console.log(prefix + "/" + suffix);
});
Python算法源码
# 输入获取
prefix, suffix = input().split(",")
prefix = prefix.rstrip("/")
suffix = suffix.lstrip("/")
print(prefix + "/" + suffix)
免责声明:
1、IT资源小站为非营利性网站,全站所有资料仅供网友个人学习使用,禁止商用
2、本站所有文档、视频、书籍等资料均由网友分享,本站只负责收集不承担任何技术及版权问题
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除下载链接并致以最深的歉意
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、一经注册为本站会员,一律视为同意网站规定,本站管理员及版主有权禁止违规用户
6、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和IT资源小站的同意
7、IT资源小站管理员和版主有权不事先通知发贴者而删除本文
评论0