40分求改
查看原帖
40分求改
1088073
Axolotlwww楼主2025/1/30 14:21

源码如下:

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

string n,m,k,h;

string removeCase(string a){
	string o;
	for(int i=0;i<a.length();i++){
		char c=a[i];
		if(65<=(int)c&&(int)c<=90) c=c+32;
		o+=c;
	}
	return o;
}
void searchWord(){
	list<int> l;
	for(int i=0;i<k.length();i++){
		if((i==0||k[i-1]==' ')&&k[i]==h[0]) l.push_back(i);
	}
	//for(int g:l) cout<<g<<",";cout<<endl;
	if(l.empty()){
		cout<<-1;
		return;
	}
	for(int i=1;i<h.length();i++){
		for(list<int>::iterator it=l.begin();it!=l.end();++it){
			if(k[*it+i]!=h[i]) it=l.erase(it);
		}
	}
	//for(int g:l) cout<<g<<",";cout<<endl;
	if(h.length()==1) for(list<int>::iterator it=l.begin();it!=l.end();++it) if(k[*it+1]!=' ') it=l.erase(it);
	if(l.empty()){
		cout<<-1;
		return;
	}
	cout<<l.size()<<" "<<l.front();
}
int main(){
	getline(cin,n);
	getline(cin,m);
	k=removeCase(m);
	h=removeCase(n);
	//cout<<h<<"|"<<endl<<k<<"|"<<endl;
	searchWord();
	
	return 0;
} 

甚至下载了测试点5还是毫无头绪,是不是题目理解错了(?

2025/1/30 14:21
加载中...