代码自己改了一下,现在有3个点超时
```cpp
#include <string.h>
#include <iostream>
using namespace std;
void ToLower(char *str)
{
for (int i = 0; i < strlen(str); i++)
if (str[i] >= 'A' && str[i] <= 'Z')
str[i] += 32; // 'a' - 'A' equals to 32
}
void Trim(char *str)
{
for (int i = 0; i < strlen(str); i++)
if (str[i] == '\n')
str[i] = '\0';
}
int main()
{
char str1[128];
char str2[1024000];
// fgets(str1, 128, stdin);
// fgets(str2, 10240, stdin);
cin.getline(str1, 128);
cin.getline(str2, 1024000);
ToLower(str1);
ToLower(str2);
Trim(str1);
Trim(str2);
char prev = ' ';
int first = 0;
int count = 0;
bool firstSet = false;
int str1Len = strlen(str1);
int str2Len = strlen(str2);
for (int i = 0; i < str2Len; i++) {
if (prev == ' ') {
bool match = true;
for (int j = 0; j < str1Len; j++) {
char cur_str1 = str1[j];
int i2 = i + j;
if (i2 >= str2Len) {
match = false;
break;
}
match &= str2[i2] == str1[j];
if (!match)
break;
}
if (i + str1Len < str2Len)
if (match && str2[i + str1Len] != ' ')
match = false;
if (match) {
if (!firstSet) {
firstSet = true;
first = i;
}
count++;
}
}
prev = str2[i];
}
if (!firstSet)
// printf("-1\n");
cout << "-1" << endl;
else
// printf("%d %d\n", count, first);
cout << count << " " << first << endl;
}
```
by src_resources @ 2019-10-06 11:59:16
我也不会
by dmjdmj @ 2019-10-07 12:31:24