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 = 0while 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加群”
🙏整理题解不易, 如果有帮助到您,请给点个赞 ❤️ 和收藏 ⭐,让更多的人看到。🙏🙏🙏