文章

4

粉丝

495

获赞

2

访问

31.1k

头像
字符串匹配升级后c++版
P1378 北京航空航天大学机试题
发布于2021年3月10日 12:43
阅读数 7.9k

#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+...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发