🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
目录
一、题目描述
1.1 输入描述
1.2 输出描述
1.3 测试样例
1.3.1 示例 1
1.3.2 示例 2
1.3.3 示例 3
1.3.4 示例 4
二、解题思路
三、代码实现
四、时间复杂度
注意:题目来源于网络用户分享,本文仅分享做题思路和方法,如有侵权请联系我删除!
一、题目描述
给定一个 URL 前缀和 URL 后缀,通过 ”,” 分隔, 需要将其连接成一个完整的 URL,如果前缀结尾和后缀开头都没有 “/”, 需要自动补上 “/” 连接符,如果前缀结尾和后缀开头都为 “/”, 需要自动去掉重复的“/”。
约束:不用考虑前后缀 URL 不合法的情况。
1.1 输入描述
URL 前缀(长度小于 100 个字符),URL 后缀(长度小于 100 个字符)。
1.2 输出描述
拼接之后的 URL。
1.3 测试样例
1.3.1 示例 1
输入
/acm, /bb
输出
/acm/bb
1.3.2 示例 2
输入
/abc/, /bcd
输出
/abc/bcd
1.3.3 示例 3
输入
/acd, bef
输出
/acd/bef
1.3.4 示例 4
输入
,
输出
/
二、解题思路
本题比较简单,主要难点在于处理两个字符串之间的空格和 '/',解题思路如下:
以 ‘,’ 为分隔,将输入字符串分隔为两个字符串 A 和 B,处理 A 字符串的结尾的空格和 /,处理 B 字符串初始的空格和 /,然后通过 A + '/' + B 拼接为新的 URL 即可。
三、代码实现
代码实现如下所示。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str;
while (getline(cin, str)) {
int idx = str.find(',');
string strLeft = str.substr(0, idx);
string strRight = str.substr(idx + 1);
// 处理右字符串
int i = 0;
int n = strRight.size();
while (i < n && strRight[i] == ' ') {
i++;
}
if (i < n && strRight[i] == '/') {
i++;
}
string strRightNew = strRight.substr(i);
// 处理左字符串
n = strLeft.size();
i = n - 1;
while (i >= 0 && strLeft[i] == ' ') {
i--;
}
if (i >= 0 && strLeft[i] == '/') {
i--;
}
string strLeftNew = strLeft.substr(0, i + 1);
// 拼接字符串
string ans = strLeftNew + "/" + strRightNew;
cout<<ans<<endl;
}
return 0;
}
四、时间复杂度
时间复杂度:O(n)
其中,n 等于输入字符串的长度,在上述代码中,对以 ‘,’ 分隔的两个 URL 分别进行处理,删除多于的空格,所以总的时间复杂度为 O(n)。
🎈 感觉有帮助记得「一键三连」支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章」回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞