本地过,全RE,有注释,求解答
查看原帖
本地过,全RE,有注释,求解答
218560
Edaw_楼主2023/11/29 22:26
#include <bits/stdc++.h>
using namespace std;
char s[1000050],c[15];//s数组存文章,c数组存单词 
int main()
{
	int i=0,n=0,r=-1;//i为s数组下标,输入用,n用于计算单词出现次数,r用于记录单词出现位置 
	scanf("%s",&c);//输入c 
	for(int j=0; j<strlen(c); j++)
	{
		c[j]=tolower(c[j]);
	}//c全部转小写 
	getchar();//消除回车 
	while(1)
	{
		s[i]=getchar(); 
		if(s[i]=='\n')
		{
			break;
		}
		s[i]=tolower(s[i]);
		i++;
	}//逐个输入s[i]并转小写 
	for(int j=0; j<strlen(s); j++)//遍历s数组 
	{
		if(s[j]==c[0])//当单词首字母出现时 
		{
			bool b=1;//用于比较首字母以外的字母 
			for(int k=1; k<strlen(c); k++)//遍历c数组 
			{
				if(s[j+k]!=c[k])
				{
					b=0;
					break;
				}
			}//遍历比较和c同长度的s,一旦不一样就break 
			if(j!=0)
			{
				if(b&&s[j-1]==' '&&s[j+strlen(c)]==' ')
				{
					n++;
					if(r==-1)
					{
						r=j;
					}
				}
			}//如果比较出来相同且单词前后都是空格,则计数n自增,记录第一次出现的位置r 
			else
			{
				if(b&&s[j+strlen(c)]==' ')
				{
					n++;
					if(r==-1)
					{
						r=j;
					}
				}
			}//如果单词在第一个则特殊考虑 
		}
	}
	if(n==0)
	{
		printf("-1");//一次都没出现 
	}
	else
	{
		printf("%d %d",n,r);//出现力 
	}
	return 0;
}
2023/11/29 22:26
加载中...