80分求助
查看原帖
80分求助
923616
lihaolin20101106楼主2024/3/5 20:34
#include<bits/stdc++.h>
using namespace std;
char a[15],b[1000010];
int main(){
	//freopen("P1308_5.in","r",stdin);
	//freopen("P1308_5.out","w",stdout);
	gets(a);
	gets(b);
	int na=strlen(a);
	int nb=strlen(b);
	int cnt=-1,ans=-1,c=0,e=-1; //e用来锁住第一次发现地(永久存储),c是次数 
	int flag=-1,flag1=0;//flag1用来跳过前导0,在第一个单词前flag=-1,ans用来存储发现地(暂存);
	for(int i=0;i<=nb;i++){
		if(b[i]>='A'&&b[i]<='z'){
			if(flag1==0){
				flag=0;
				flag1++;//遇到单词说明已经度过前导0 
			}
			cnt++;
			if(e==-1&&ans==-1){
				ans=i;//如果暂存和永存都没有就执行 
			}
			if(a[cnt]!=b[i]&&a[cnt]!=b[i]+32&&a[cnt]!=b[i]-32){
				flag=1;//改变状态 
			}
		}
		else{
			if(flag==0&&cnt==na-1){
				if(e==-1){
					e=ans;//没有被赋值就赋值 
				}
				if(i!=0&&b[i-1]!=' '){
					c++;//因为我的代码处理不了中间连续0,所以要加判断 
					for(int j=i-na-1;j<=i;j++){
						//cout<<b[j];
					}
					//cout<<endl;
				}
			}
			else{
				ans=-1;
				if(flag1!=0){
					flag=0;
				}
				cnt=-1;
			}
		}
	}
	if(c==0){
		cout<<-1;
	}
	else{
		cout<<c<<" "<<e;
	}
	return 0;
}
2024/3/5 20:34
加载中...