社区讨论

为什么把s[i]!='\0改成i<strlen(s)就会tle呢

P1308[NOIP 2011 普及组] 统计单词数参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo104pzh
此快照首次捕获于
2023/10/22 13:01
2 年前
此快照最后确认于
2023/11/02 12:31
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e8 + 1;
#define read(a) {char c;while((c=getchar())>47) a=a*10+(c^48);}
int n, m;
char t[12];
char s[N];
int ans = 0;
int first = 0;
int judge(int x)
{
	int j = 0;
	int i;
	for ( i = x;tolower(s[i])==t[j]&&isalpha(s[i])&&isalpha(t[j]); )
	{
		i++;
		j++;
	}
	if (!isalpha(s[i])&&j==strlen(t))
	{
		if (ans == 0)
			first = x;
		ans++;
	}
	return i;
}
int main() {
	cin.getline(t,12);
	cin.getline(s, N);
	for (int i = 0; i < strlen(t); i++)
	{
		t[i] = tolower(t[i]);
    }
	for (int i = 0; s[i]!='\0'; i++)
	{
		if ((i==0|| !isalpha(s[i-1])) && tolower(s[i]) == t[0])
		{
			i=judge(i);
		}
	}
	if (ans != 0)
		cout << ans << " " << first << endl;
	else
		cout << -1 << endl;
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...