HJ71 题解 | #字符串通配符#

字符串通配符

https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036

import re
while True:
    try:
        a=input().lower()#题目说了不区分大小写,这里直接转小写
        b=input().lower()
        a=a.replace(".","\.")#处理正则表达式中的元字符
        a=a.replace("*","[0-9a-z]*")#将通配符用正则表达式规则写出来
        a=a.replace("?","[0-9a-z]{1}")
        if b in re.findall(a,b):#判断以a做模式时能否匹配出和b一模一样的结果
            print("true")
        else:
            print("false")
    except:
        break

这道题出题者应该是想考正则表达式,但是数据给得应该比较弱,如果给很强的数据,我上面这个代码是过不了的,因为只针对点号.这个元字符做了处理,没有处理其他很多的元字符。

这里随便给出几组测试用例:

用例1

输入: 
z+
zz
输出:
false

用例2

输入:
[a-z]
a
输出:
false

如果要完整地通过所有hack数据(包括我没给出来的),上面这个代码需要做很多的正则表达式元字符处理才行。

#华为##华为od##华为机试##华为od机试##正则表达式#
华为HJ103所有解法 文章被收录于专栏

这是我准备华为od面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~

全部评论

相关推荐

不服输的外卷侠很健谈:杭电来我公司还是很有认可度的,可以来试试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务