(算法练习)——201409-3字符串匹配

良心第三题~
暴力匹配的,如果遇到不敏感,那么把原始的字符串和后面输入需要匹配的字符串都转成小写来处理(同样也可都转成大写)
在匹配的时候内层套个while循环,从每一位开始看能不能匹配到标准字符串的末尾,成功,break,记录这个字符串

AC代码:

#include <stdio.h>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    
    
	string biaozhun;
	cin>>biaozhun;
	string ans[100];   //存放结果字符串 
	int pos,n,signal = 0;   //是否大小写敏感,个数,成功个数 
	scanf("%d",&pos);
	scanf("%d",&n);
	if(pos == 0){
    
         //不敏感,都转成小写处理 
		transform(biaozhun.begin(),biaozhun.end(),biaozhun.begin(),::tolower);
	}
	for(int i = 0;i <n;i++){
    
    
		string str;
		string yuanshi;
		cin>>str;
		yuanshi = str;
		if(pos == 0){
    
    
			transform(str.begin(),str.end(),str.begin(),::tolower);
			for(int j = 0;j <str.size();j++){
    
    
				int s = 0;
				int t = j;
				while(s<biaozhun.size()){
    
    
					
					if(str[t] == biaozhun[s]){
    
    
						s++;
						t++;
					}
					else{
    
    
						break;
					}
				}
				if(s == biaozhun.size()){
    
    
					ans[signal] = yuanshi;
					signal++;
					break;
				}	
			}
		}
		else{
    
    
			for(int j = 0;j <str.size();j++){
    
    
				int s = 0;
				int t = j;
				while(s<biaozhun.size()){
    
    
					
					if(str[t] == biaozhun[s]){
    
    
						s++;
						t++;
					}
					else{
    
    
						break;
					}
				}
				if(s == biaozhun.size()){
    
    
					ans[signal] = yuanshi;
					signal++;
					break;
				}	
			}
		}
		
	}
	for(int i = 0;i <signal;i++){
    
    
		cout<<ans[i]<<endl;
	}
	
}

猜你喜欢

转载自blog.csdn.net/weixin_42377217/article/details/104391216