【编程题目 | 100分】拼接URL [ 100 / 简单 ]
拼接URL
题目描述:
- 给定一个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:
输入
,
输出
/
参考代码:
Java代码实现:
- Java接口实现
import java.util.Scanner;
public class URLPre {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] URL = in.nextLine().split(",");
StringBuilder sb = new StringBuilder();
if (URL.length == 0) {
System.out.println("/");
return;
}
sb.append("/");
sb.append(URL[0]);
sb.append("/");
sb.append(URL[1]);
System.out.println((sb.toString()).replaceAll("/+", "/"));
}
}
- 模拟实现
import java.util.Scanner;
public class URLPre {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] URL = in.nextLine().split(",");
StringBuilder sb = new StringBuilder();
if (URL.length == 0) {
System.out.println("/");
return;
}
if (URL[0].charAt(0) == '/') { //前缀字符串是'/'开头
if (URL[0].charAt(URL[0].length() - 1) != '/' && URL[1].charAt(0) != '/') { // 前缀最后一个字符不是'/',且后缀第一个也不是
sb.append(URL[0]);
sb.append('/');
sb.append(URL[1]);
// 这个判断有问题,不进
} else if (URL[0].charAt(URL[0].length() - 1) == '/' && URL[1].charAt(0) == '/'){ // 前缀最后一个字符是'/',且后缀第一个也是, 前缀去掉,后缀不变
sb.append(URL[0].substring(0, URL[0].length() - 1));
sb.append(URL[1]);
} else { // 前缀最后一个字符是'/',或者后缀第一个是
sb.append(URL[0]);
sb.append(URL[1]);
}
} else {
sb.append('/');
if (URL[0].charAt(URL[0].length() - 1) != '/' && URL[1].charAt(0) != '/') { // 前缀最后一个字符不是'/',且后缀第一个也不是
sb.append(URL[0]);
sb.append('/');
sb.append(URL[1]);
// 这个判断有问题,不进
} else if (URL[0].charAt(URL[0].length() - 1) == '/' && URL[1].charAt(0) == '/'){ // 前缀最后一个字符是'/',且后缀第一个也是, 前缀去掉,后缀不变
sb.append(URL[0].substring(0, URL[0].length() - 1));
sb.append(URL[1]);
} else { // 前缀最后一个字符是'/',或者后缀第一个是
sb.append(URL[0]);
sb.append(URL[1]);
}
}
System.out.println(sb.toString());
}
}