社区讨论
为什么把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 条回复,欢迎继续交流。
正在加载回复...