题解 | #实现字通配符*#

实现字通配符*

https://www.nowcoder.com/practice/bab19e5b95b54744aa824e0d7be51487

经测试字符串s的长度在1000以内;
遇到*时分两步,
第一步直接迭代到末尾; 第二步依次返回;即为*分别取 最大~0 时的情况

string p, s;
set<int> se;
void dfs(int a, int b) {
    if (a == p.size()) {
        se.insert(b - 1);
    }
    else if (b == s.size()){
        if(a==p.size()-1&&p[a]=='*')
            {se.insert(b-1);}
    }
    else if (p[a] == s[b]) {
            dfs(a + 1, b + 1);
    }
    else if (p[a] == '*') {
        dfs(a, b + 1);
        dfs(a + 1, b);
    }
}
void solve() {
     cin >> p >> s;
     int ans=0;
    for (int i = 0; i < s.size(); i++) {
        dfs(0,i);
        if(!se.empty())ans++;
        for (int end : se) {
            if(end-i+1==0)continue;
            cout << i << " " << end - i + 1<<endl;
        }
        se.clear();
    }
    if(ans==0){
        cout<<-1<<" "<<0;
    }

alt

全部评论

相关推荐

淬月星辉:专利是什么?至少描述一下吧,然后把什么计算机二级、普通话这种拉低格调的证书删掉,不然hr以为你没东西写
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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