最新华为上机考试
真题目录:点击查看目录
华为OD面试真题精选:点击立即查看
2025华为od机试双机位A卷 -华为OD上机考试双机位A卷
题目描述
为了便于业务互交,约定一个对输入的字符串中的下划线做统一替换。
具体要求如下:
输入字符串,将其中包含的每一个下划线“_”,使用特殊字符串(^|$|[,+])替换,并输出替换后的结果。
其中的例外场景不做替换,场景如下:
在一堆方括号之内的下划线不做替换
为转义的下划线,即\_则不替换
备注:
调用者已确保,输入表达式的方括号会成对出现,并且方括号会在嵌套。即存在"[xx[yyyy]xxx]"这种形式的字符串
输入字符串的长度范围:[0,10000]
输入描述
一个字符串,例如(_9494)
输出描述
一个字符串,例如((^|$|[,+])9494)
示例1
输入
hello_world_test
输出
hello(^|$|[,+])world(^|$|[,+])test
说明
示例2
输入
(_9494)
输出
((^|$|[,+])9494)
说明
解题思路
这道题目要求我们对一个输入的字符串进行处理,替换掉其中的下划线(_)字符,特定条件下使用正则替换模式 (^|$|[,+])。在进行替换时,我们需要特别注意以下几个要点:
- 转义字符: 字符串中可能包含转义下划线(
\_),这些转义下划线不需要进行替换。 - 方括号: 我们需要注意方括号 (
[和]) 内的内容,只有在不在方括号内时才替换下划线。 - 栈的使用: 栈可以帮助我们追踪当前是否在方括号内。当遇到左方括号 (
[) 时,入栈;当遇到右方括号 (]) 时,出栈。这样可以判断下划线是否位于方括号内。
Java
import
订阅专栏 解锁全文
392

被折叠的 条评论
为什么被折叠?



