文章
61
粉丝
137
获赞
18
访问
39.8k
//疑惑:会不会有重复输出匹配到的字符串的情况没有考虑进去,
//例如:”sdfacsdfbc“与字符串”sdf[ab]c”匹配,"sdfacsdfbc"会被输出两次
#include
using namespace std;
int main(){
//输入
int n;
while(cin >> n){
string ss[n];
string ssl[n]; //将ss中的字符串转换成小写填入ssl中
string ms;
for(int i = 0; i < n; i++){
cin >> ss[i];
ssl[i] = ss[i];
transform(ss[i].begin(), ss[i].end(), ssl[i].begin(), ::tolower);
}
cin>> ms;
transform(ms.begin(), ms.end(), ms.begin(), ::tolower); //将ms转换成小写
//将模式串中括号分解,依次进行查询
int l = ms.find('['); //左括号的小标
int r = ms.find(']'); //右括号的小标
string pre = ms.substr(0,l); //左括号前的字符串
string post = ms.substr(r+1, ms.size() - r -1); //右括号前的字符串
int curnumber = l; //用于指向括号中字符的小标
while(++curnumber != r){ //循环遍历括号中的字符,并将其和pre、post、组合成cur
string cur = pre + ms[curnumber] +post;
...
登录后发布评论
4
Aab
a2B
ab
ABB
[Abc][a2b]b
没输出