本文收录于「最新最全华为OD机试真题(Golang版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!!
提醒:拒绝一切代考/替考,违法必究!专栏所写题库均搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。
订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅读使用!
如上题库均已同步更新至最新华为OD机试真题,赶紧操练起来吧~~
具体题目描述如下:
给定一个 url
前缀和 url
后缀,通过 ,分割 需要将其连接为一个完整的 url 如果前缀结尾和后缀开头都没有/
需要自动补上 /
连接符
如果前缀结尾和后缀开头都为/
需要自动去重
约束:
不用考虑前后缀 URL
不合法情况
url
前缀(一个长度小于 100 的字符串)
url
后缀(一个长度小于 100 的字符串)
拼接后的 url
输入:
/acm,/bb
输出:
/acm/bb
示例说明:
输入:
/abc/,/bcd
输出:
/abc/bcd
示例说明:
输入:
/acd,bef
输出:
/acd/bef
示例说明:
输入:
,
输出:
/
示例说明:
温馨提醒: 大家在参加华为OD机试时,切记不要仅仅死记硬背题解代码。真正的通过率取决于你对代码的理解能力。建议你在理解基本原理和逻辑的基础上,模仿并自己编写代码,这样才能更有效地应对机试。
该题的核心要求是根据给定的 url
前缀和 url
后缀,拼接成一个完整的 URL。题目要求考虑到两种情况:
/
,则自动添加一个 /
连接符;/
,则去重多余的 /
,确保 URL 中只保留一个斜杠作为分隔符。/
。输入处理:
,
进行分割,分割后的结果应包含两个部分,即 url
的前缀和后缀。/
。拼接逻辑:
/
,形成一个简单的 URL 连接。/
,确保形成有效的 URL。去除多余的斜杠:
regexp.MustCompile("/+")
来匹配一个或多个斜杠,并替换成单一的斜杠 /
。这可以有效去除多余的斜杠,确保最终的 URL 结构符合规范。输出结果:
输入解析:
/
。拼接 URL:
/
连接它们;如果只有一个部分,直接在其后添加一个斜杠。正则去重:
regexp.MustCompile("/+")
查找所有连续的斜杠,并将其替换为单个斜杠 /
。输出拼接后的 URL:
通过这些步骤,可以确保不同输入情况下程序都能返回正确的 URL。
根据如上题解思路,进行代码实战,大家请看如下,建议不要死记硬背代码,要理解其题型及实现思路,别担心,代码我都会给出超详细注释,你一定能看明白的。
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
var line string
fmt.Scanln(&line) // 读取输入行
solveMethod(line) // 处理拼接 URL
}
// solveMethod 处理URL拼接的主要逻辑
func solveMethod(line string) {
if line == "" { // 如果输入为空
fmt.Println("/") // 输出根目录
return
}
split := strings.Split(line, ",") // 按逗号分隔输入
var combine string
// 判断输入格式,拼接成正确的 URL
if len(split) >= 2 {
combine = split[0] + "/" + split[1] // 将两个部分拼接,中间加一个 /
} else if len(split) == 1 {
combine = split[0] + "/" // 如果只有一个部分,则加一个 /
} else {
combine = "/" // 如果输入为空,输出 /
}
// 使用正则去除多余的 /
reg := regexp.MustCompile("/+")
url := reg.ReplaceAllString(combine, "/")
fmt.Println(url) // 输出拼接后的 URL
}
这个程序实现了一个简单的URL拼接功能,主要逻辑如下:
输入处理:
fmt.Scanln()
读取一行输入,这相当于Java中的Scanner.nextLine()
URL拼接逻辑:
首先检查输入是否为空,如果是空字符串,直接返回根目录"/"
使用strings.Split()
函数按逗号分隔输入,类似于Java的split(",")
方法
根据分割后数组的长度进行不同的处理:
URL格式化:
/+
匹配连续的一个或多个斜杠regexp.MustCompile()
编译正则表达式ReplaceAllString()
方法将所有匹配到的连续斜杠替换为单个斜杠,确保URL格式正确输出结果:
fmt.Println()
输出处理后的URL这段Go代码完全实现了原Java代码的功能,保持了相同的业务逻辑。主要区别在于Go语言的语法和库函数使用方式:
fmt.Scanln()
代替Java的Scanner.nextLine()
进行输入读取strings.Split()
代替Java的split()
方法进行字符串分割regexp
代替Java的正则表达式功能,实现多余斜杠的去除scanner.close()
这个实现简洁明了,符合Go语言的编程风格。程序通过检查输入、分割字符串、拼接URL片段和正则表达式替换,有效地解决了URL拼接问题,确保输出的URL格式正确,避免了多余斜杠的出现。代码逻辑清晰,易于理解和维护。
针对如上分享OD机试真题之外,这里我还开源全部OD机试原真题源码,供同学们一对一学习!对照每题都有题目号及详细代码注释。Gitee,例如题序号为1,则题解代码对应文件夹OD1,题序号为5,则题解代码对应文件夹OD5,以此类推,目的就是为了方便大家学习,一举上岸!(这里的题序号指专栏导航贴中表格一列的序号)
如果你还想学习更多相关OD真题题解,都建议直接毫不犹豫地学习此专栏「最新最全真题华为OD机试真题(全栈版)」,快速掌握Java、Python、C++、JavaScript、Go等多种热门语言详细解题,快速突破华为OD机试,实现350+高分目标。还将提供线上多端答疑交流,解决你的所有问题!
注意: 上述任意专栏一次订阅,获永久免费阅读权限,后续更新都能学习。
声明: 拒绝一切形式的代考,替考行为,务必诚信考试!!!本人所写题库均搜集于互联网。
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主&最具价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。
-End-