蒟蒻40分求助,后六个点RE,改一晚上了qwq
查看原帖
蒟蒻40分求助,后六个点RE,改一晚上了qwq
485080
稽蒻•ᴥ•楼主2021/8/15 00:01

rt,有大佬帮忙看看吗,蒟蒻感激不尽qwq

#include<bits/stdc++.h>
using namespace std;
string a,s; 
int main(){
	int ans1=0,ans2=1<<30;//ans1记录找到了多少个,ans2记录最靠前的位置 
	getline(cin,a);//整行输入 a 
	getline(cin,s);//整行输入 s
	int okk=0;//标记是否至少找到一个 
	for(int i=0;i<a.length();i++){//大写转小写 
		if(a[i]>='A'&&a[i]<='Z'){
			a[i]=a[i]-'A'+'a';
		}
	}
	for(int i=0;i<s.length();i++){//大写转小写 
		if(s[i]>='A'&&s[i]<='Z'){
			s[i]=s[i]-'A'+'a';
		}
	}
	for(int i=0;i<s.length();i++){
		int ok=1,ss=0;//都为判断是否查找到的变量,ok相当于flag,ss是计数器 
		int j=i; 
		for(j=i;s[j]!=' ';j++){//循环查找,直至s[j]为空格停止 
			if(a[j]==' '){//若a已经为空格了,还没比较完 
				ok=0;break;//标记ok=0,退出循环 
			}
			if(a[j-i]!=s[j]){//比较,若不相等,标记ok=0,退出 
				ok=0;break;
			}
			ss++;//没有退出,说明这个字符匹配成功,计数器+1 
		}
		if(s[i]!=' '&&ok&&(ss==a.length())){//若开头不为空格,且未被标记,且计数器与a的长度相等 
			okk=1;//说明至少找到一个,不用输出-1, 
			ans1++;//找到一个,ans++
			ans2=min(ans2,i);//找最先匹配成功的第一个字符的位置,更新答案 
		}
	}
	if(okk) cout << ans1 << " " << ans2 << endl;//如果找到了,输出答案 
	else cout << -1 << endl;//否则输出-1 
	return 0;
}
2021/8/15 00:01
加载中...