题解 | #字符串通配符#

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

#include <iostream>
#include <string>

using namespace std;

bool match(const string& pat,const string& tag,int pidx,int tidx){
    // 同时到达末尾!
    if(pidx >= pat.size() && tidx >=  tag.size()) return true;
    // 只有一个到达末尾!
    if(pidx >= pat.size() || tidx >=  tag.size()) return false;
    // 模式串是 ? 单字符通配符!
    if(pat[pidx] == '?'){
        // 如果对应到的位置不能被替代!
        if(!isdigit(tag[tidx]) && !isalpha(tag[tidx])) return false;
        // 能被替代,向下继续走!
        return match(pat,tag,pidx + 1,tidx + 1);
    }else if(pat[pidx] == '*'){ // 遇到的是一个 * 无穷通配符!
        while(pat[pidx] == '*') pidx ++; // 连续的 * 只能算是一个 * 
        pidx --; // 只认为连续的*中最后一个*有效!
        if(!isdigit(tag[tidx]) && !isalpha(tag[tidx])) return match(pat,tag,pidx + 1,tidx); // 当* 无法匹配 * 做空字符!
        return match(pat,tag,pidx + 1,tidx) || match(pat,tag,pidx + 1,tidx + 1) || match(pat,tag,pidx,tidx + 1); // * 可以不用于匹配, 可以用于匹配单个字符,可以匹配多个字符!
    }else if(tolower(pat[pidx]) == tolower(tag[tidx])){ // 当对应位置字符相同,就直接一起向下即可!
        return match(pat,tag,pidx + 1,tidx + 1);
    }
    return false;
}

int main(){
    string pat,tag;
    getline(cin,pat);
    getline(cin,tag);
    if(match(pat,tag,0,0)) cout<<"true";
    else cout<<"false";
    cout<<endl;
    return 0;
}

全部评论

相关推荐

船长想实习:我啥技术不会决定去试试,然后进去也不干活就搅局可以吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4401次浏览 77人参与
# 找AI工作可以去哪些公司? #
9509次浏览 255人参与
# 厦门银行科技岗值不值得投 #
8146次浏览 188人参与
# 你的实习产出是真实的还是包装的? #
20489次浏览 343人参与
# AI面会问哪些问题? #
28438次浏览 572人参与
# 春招至今,你的战绩如何? #
66746次浏览 588人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15481次浏览 223人参与
# 从事AI岗需要掌握哪些技术栈? #
9382次浏览 329人参与
# 中国电信笔试 #
32126次浏览 295人参与
# 你做过最难的笔试是哪家公司 #
34705次浏览 253人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
341033次浏览 2175人参与
# 金三银四,你的春招进行到哪个阶段了? #
22379次浏览 284人参与
# 同bg的你秋招战况如何? #
212250次浏览 1121人参与
# 哪些公司真双非友好? #
69755次浏览 289人参与
# 如何准备秋招 #
78315次浏览 868人参与
# 阿里笔试 #
179152次浏览 1318人参与
# 机械人避雷的岗位/公司 #
62713次浏览 393人参与
# 小马智行求职进展汇总 #
25149次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14992次浏览 122人参与
# 担心入职之后被发现很菜怎么办 #
291406次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26297次浏览 310人参与
# 应届生第一份工资要多少合适 #
20707次浏览 86人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务