题解 | #字符串匹配#

字符串匹配

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

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1010;
string p, s[N];

string tolow(string s){
    string res;
    for(int i = 0; i < s.size(); i ++)
        res += tolower(s[i]);
    return res;
}

bool match(string a, string p){
    for(int i = 0, j = 0; i < a.size() || j < p.size(); i ++){
        if(i == a.size() || j == p.size()) return false;
        if(p[j] != '['){
            if(p[j] != a[i]) return false;
            j ++;
        }else{
            string s;
            j ++;
            while(p[j] != ']') s += p[j ++];
            j ++;
            if(s.find(a[i]) == -1) return false;
        }
    }
    return true;
}

int main(){
    int n;
    cin>>n;
    for(int i = 0; i < n; i ++) cin>>s[i];
    cin>>p;
    for(int i = 0; i < n; i ++){
        if(match(tolow(s[i]), tolow(p))) cout<<i + 1<<" "<<s[i]<<endl;
    }
    return 0;
}

全部评论

相关推荐

11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务