心态小炸
查看原帖
心态小炸
231543
bloodstalk楼主2022/3/17 21:02
#include<bits/stdc++.h>
using namespace std;

string s;
string a,b;
int l,l1,l2;
int weizhi;

void find(string s,string a)/*这里定义string函数返回s,不知道为什么不能用void函数在里面直接输出*/
{
	int sum=0,first;
	l=s.length();
	l1=a.length();
	b=a;
	b[0]=' ';
	while(s.find(a,weizhi)!=-1)/*如果s里面还有a子串*/
	{
		if(s.find(a,weizhi)==0)
		{
			if(s[s.find(a,weizhi)+l1]==' ') sum++;
		}
		else if(s[s.find(a,weizhi)-1]==' '&&s[s.find(a,weizhi)+l1]==' ') sum++;
		if(sum==1) first=s.find(a,weizhi);
		weizhi=s.find(a,weizhi);/*更新位置*/
		s.erase(weizhi,l1);/*从weizhi这一位置开始往后删去l1个字符,l1就是a的长度*/
		s.insert(weizhi,b);/*s.insert(weizhi,b);*/ /*再从weizhi这个地方插入b,填充a的空缺*/
	}
	if(sum==0) cout<<"-1";
	else cout<<sum<<" "<<first;
}

int main()
{
	getline(cin,a);
	getline(cin,s);
	l=s.length();
	s[l]=' ';
	l1=a.length();
	for(int i=0;i<l;i++)
		if(s[i]>='A'&&s[i]<='Z') s[i]+=32;
	for(int i=0;i<l1;i++)
		if(a[i]>='A'&&a[i]<='Z') a[i]+=32;
	find(s,a);/*返回的是s所以直接输出*/
}
实在不知道还有什么特殊情况了,求指正
2022/3/17 21:02
加载中...