OD统一考试
分值: 100分
题解: Java / Python / C++
题目描述
给定一个 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 <iostream>
#include <string>
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加群”
🙏整理题解不易, 如果有帮助到您,请给点个赞 ❤️ 和收藏 ⭐,让更多的人看到。🙏🙏🙏