60分求助
查看原帖
60分求助
539594
YoungK21楼主2021/10/2 11:18
#include <iostream>
using namespace std;
int main()
{
	char word[11] = {}, passage[1000001] = {};
	cin >> word;
    char ch[5]={};
	cin.getline(ch,5,'\n');
	cin.get(passage, 1000001, '\n');
	
	//计算单词长度
	int lenword = 0;
	for (int i = 0; i < 10; i++)
	{
		if (word[i] != '\0' && word[i + 1] == '\0')
			lenword = i + 1;
	}

	//将大写转化为小写
	for (int i = 0; i < 1000000; i++)
	{
		if (passage[i] >= 65 && passage[i] <= 90)
		{
			passage[i] = passage[i] + 32;
		}
	}
	for (int i = 0; i < lenword; i++)
	{
		if (word[i] >= 65 && word[i] <= 90)
		{
			word[i] = word[i] + 32;
		}
	}

	//逐位判断
	int times = 0;
	int first = 0;
	for (int i = 0; i < 1000000-lenword; i++)
	{
		int flag = 1;
		for (int j = 0; j < lenword; j++)
		{
			if (passage[i + j] != word[j])
			{
				flag = 0; break;
			}
		}

		if (flag == 1)//检查是否独立单词
		{
			if (i == 0 && passage[lenword] == ' ')
				times++;
			else if (i != 0 && passage[i - 1] == ' ' && (passage[i + lenword] = ' ' || passage[lenword] == '\0'))
				times++;

			if (times == 1)
				first = i;
		}
	}

	//输出
	if (times == 0)
		cout << "-1" << endl;
	else
		cout << times<<" "<<first << endl;
	return 0;
}

求助,60分,5789过不了,谢谢!

2021/10/2 11:18
加载中...