文章
4
粉丝
495
获赞
2
访问
31.0k
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//转全部小写
void lowCase(string& str)
{
for (int i = 0; i < str.size(); ++i) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = str[i] + 'a' - 'A';
}
}
}
bool matched(string str, string pattern)
{
lowCase(str);//转全部小写
lowCase(pattern);//转全部小写
int len1 = str.size();
int len2 = pattern.size();
int i = 0;
int j = 0;
//挨个扫描
while(i<len1 && j<len2){
//扫描匹配串为‘[’开头,则查找[]里面有无被匹配串的第i个字符,
//如果有就把j置于‘]’之后,i向后走一位
//如果没有直接返回false,判断有没有用flag判断
if(pattern[j] == '['){
int flag1 = 0;
for(j = j+1;pattern[j]!=']';j++)
if(str[i] == pattern[j]) flag1 = 1;
if(flag1 == 0) {
return false;
}
for(j;pattern[j]!=']';j++);
j++;
i++;
}
//扫描匹配串不是‘[’开头,则直接看i,j是否匹配
else{
if(str[i] == pattern[j]){
j++;
i+...
登录后发布评论
暂无评论,来抢沙发