题解 | #字符串匹配#
字符串匹配
https://www.nowcoder.com/practice/fbdc522ef958455687654b38a4ca01e0
遇到方括号时判断
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<string>
#include<ctype.h>
#include<queue>
using namespace std;
int main(){
int n;
// cin >> n;
string s;
while(cin >> n){
string T[n], t[n];
for(int i=0;i<n;++i){
cin >> T[i];
t[i] = T[i];
for(int j=0;j<T[i].size();++j)
t[i][j] = tolower(T[i][j]);
}
cin >> s;
for(int j=0;j<s.size();++j)
s[j] = tolower(s[j]);
for(int k=0;k<n;++k){
int i=0, j=0;
int f = 0, m = t[k].size();
while(i<m && j<s.size()){
if(s[j] == '[')
f = 1;
if(s[j] == t[k][i]){
++j;
++i;
}else{
if(f){
while(s[j] != ']' && s[j] != t[k][i]) ++j;
if(s[j] == t[k][i]){
++i;
while(s[j] != ']') ++j;
f = 0; ++j;
}
else
break;
}else
break;
}
}
if(i>=m ){
cout << k+1 << ' ' << T[k] << endl;
}
}
}
// system("pause");
return 0;
}


字节跳动公司福利 1309人发布