最新华为OD机试
2025华为od 机试2025B卷-华为机考OD2025年B卷
题目描述
问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。\
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同)?:匹配1个字符
注意:匹配时不区分大小写。
输入描述
通配符表达式: 一组字符串。
输出描述
返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false。
示例1
输入
te*t
te123t
输出
true
说明
*”转换为[0-9a-z]{0,},正则表达式:te[0-9a-z]{0,}t
匹配说明: “te” + 任意多个字母数字 + “t”,匹配“te123t”
示例2
输入
**soft
nezhasoft
输出
true
解题思路
-
递归回溯法:使用递归函数探索所有可能的匹配方式,遇到通配符时尝试不同的匹配策略。
-
基本情况处理:
- 当模式串匹配完时,文本串也必须匹配完才算成功
- 当文本串匹配完但模式串还有剩余时,只有模式串剩余部分全为’*'才能匹配成功
-
通配符处理:
- ‘*’:可以匹配0个或多个有效字符(字母或数字)
- ‘?’:只能匹配1个有效字符(字母或数字)
- 普通字符:必须精确匹配
-
大小写不敏感:将所有字符转为小写后再进行匹配
算法流程
-
递归匹配函数:
- 参数:模式串、模式串当前位置、文本串、文本串当前位置
- 返回值:布尔值,表示是否匹配成功
-
递归终止条件:
- 模式串已匹配完:检查文本串是否也匹配完

订阅专栏 解锁全文
608

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



