文章

8

粉丝

216

获赞

20

访问

67.6k

头像
字符匹配简略写法
推荐阅读
P1378 北京航空航天大学机试题
发布于2021年4月25日 20:28
阅读数 9.5k

#include<bits/stdc++.h>
using namespace std;

string in[1000];

//因不区分大小写,故全部转换为小写
void lowerCase(string& str){
	for(int i=0; i<str.length(); i++){
		if('A'<=str[i] && str[i]<='Z')
			str[i] = str[i] - 'A' + 'a';
	}
}

//是否与字符串匹配
//寻找被匹配字符串是否匹配匹配字符串
bool matched(string str, string pattern){
	int len1 = str.length();
	int len2 = pattern.length();
	lowerCase(str);//转小写
	lowerCase(pattern);//转小写
	int i=0, j=0;
	
	//逐个扫描
	while(i<len1 && j<len2){
		//扫描字符串以'['开头,查找[]内有无被匹配pattern的第i个字符
		//若有则将j置于']'后一个字符,i向后移一位
		//若无则直接返回false
		if(pattern[j] == '['){
			int flag = 0;
			//是否有和[]内任意一个字符匹配的
			for(j=j+1; pattern[j]!=']'; j++)
				if(str[i] == pattern[j])
					flag = 1;
			if(flag==0)
				return false;
			//将j移至']'之后
			for(j; pattern[j]!=']'; j++);//此时pattern[j]==']',跳出循环
			j++;
			//将i后移一位
			i++;
		}else{//若字符串不以'['开头
			if(str[i] == pattern[j]){
				//字符正常后移
				i++;
				j++;
			}else
				retur...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发