题解 | #字符串通配符#

字符串通配符

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

题目不难,正则表达式细节较多,需要注意,完整代码如下:
//获取第一行输入流
let line1 = readline();
//获取第二行输入流
let line2 = readline();
//构建验证通配符的函数;
function checkWildcard(str1, str2) {
    //构建新string,将"?","*"转换成正则表达式中相应的表达,注意不需要大小写,所以都转换成小写(大写亦可);
    let newStr1 = str1.replace(/\?/g,'[A-Za-z0-9]' ).replace(/\*/g, '[A-Za-z0-9]{0,}').toLowerCase();
    let newStr2 = str2.toLowerCase();
    let output = false;
    //由示例5可知,需完全匹配,故加上首尾符号"^"和"$";
    let regex1 = new RegExp('^' + newStr1 + '$');
    //如匹配,则output值由false转变为true;
    if (newStr2.match(regex1)) {
        output = true;
    }
    //如不匹配,输出output初始值false;
    return output;
}
console.log(checkWildcard(line1, line2));


全部评论
首先谢谢楼主,答案简洁明了。 其次给个小建议~~~ replace(/\*/g, '[A-Za-z0-9]{0,}') 换成 replace(/[\*]+/g, "[A-Za-z0-9]{0,}"); 可以提高运行效率 否则测试用例 h*h*ah**ha*h**h***hha hhhhhhhahhaahhahhhhaaahhahhahaaahhahahhhahhhahaaahaah 显示超时
1 回复 分享
发布于 2024-04-05 10:11 陕西

相关推荐

迷茫的大四🐶:哇靠,哥们,啥认证啊,副总裁实习,这么有实力嘛
一起聊美团
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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