70分??
查看原帖
70分??
194790
祸榊__楼主2020/7/28 14:30
#include<cstdio>
#include<cstring>
#define li(i,j,k) for(int i=j ; i<=k ; i++)
#define si(i,j,k) for(int i=j ; i>=k ; i--)
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0' || ch>'9'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0' && ch<='9'){
		x=(x<<3)+(x<<1)+ch-'0';
		ch=getchar();
	}
	return x*f;
}
char word[11];
char sen[1000001];
int lena,lenb;
int find_b(int st){
	li(i,st,lenb-1){
		if(sen[i]==' '){
			return i;
		}
	}
	return -1;
}
int main(){
	int times=0,fir=0;
	bool flag=true; 
	gets(word);
	gets(sen);
	lena=strlen(word),lenb=strlen(sen);
	li(i,0,lenb-1)if(sen[i]>=97 && sen[i]<=122)sen[i]-=32;
	li(i,0,lena-1)if(word[i]>=97 && word[i]<=122)word[i]-=32;//大小写 
	li(i,0,lenb-1){
		int next=find_b(i+1);
		if(next-i==lena){
			bool ok=true;
			li(j,i,next-1){
				if(sen[j]!=word[j-i]){
					ok=false;
					break;
				}
			}
			if(ok){//单词出现 
				times++;
				if(flag){//判断首个单词出现的位置 
					flag=false;
					fir=i;
				}
			}
		}
		if(next==-1)break;
		i=next;
	}
	if(times==0){
		printf("-1\n");
		return 0;
	}
	printf("%d %d\n",times,fir);
	return 0;
}

为什么wa了5,7,9三个点

2020/7/28 14:30
加载中...