6. 最长最短单词
题目ID:9799100分
最新提交:
Time Limit Exceeded
0 分
历史最高:
Time Limit Exceeded
0 分
时间限制: 1000ms
空间限制: 524288kB
题目描述
输入 11 行句子(不多于 100100 个单词,每个单词长度不超过 100100,以.
作为结尾),只包含字母、空格、逗号和句号。单词由至少一个连续的字母构成,空格、逗号和句号都是单词间的间隔。
输出第 11 个最长的单词和第 11 个最短单词。
输入格式
输入数据:一行句子。
输出格式
第 11 行,第一个最长的单词。
第 22 行,第一个最短的单词。
样例
Input 1
I am a student,i am studying Programming language C in Peking University.
Output 1
Programming I
#include<bits/stdc++.h>
using namespace std;
int ans1=0,ans2=0x3f3f3f,cnt;
string s,s1,s2,s0;
int main()
{
getline(cin,s);//一整行输入
for(int i=0;i<s.length();i++)
{
if(s[i]==' '||s[i]==','||s[i]=='.')//判定单词末尾(注意中英符号区分)
{
if(cnt>ans1)//最大值打擂台
{
s1=s0;
ans1=cnt;
}
if(cnt<ans2)//最小值打擂台
{
s2=s0;
ans2=cnt;
}
cnt=0;
s0.clear();//清除当前单词
}
else
{
s0+=s[i]; //一般情况(记录单词字母以及其个数)
cnt+=1;
}
}
cout<<s1<<endl<<s2<<endl;//一般输出
return 0;
}
还有这个:
10. 单词统计
题目ID:1381100分
最新提交:
Memory Limit Exceeded
90 分
历史最高:
Memory Limit Exceeded
90 分
时间限制: 1000ms
空间限制: 65536kB
题目描述
输入一行文字,统计其中有多少个单词。单词之间是用一个或多个空格间隔的。
输入格式:
一行文字,可多达10000000个。
输出格式:
单词个数。
样例输入:
I am a boy.
样例输出:
4
数据范围:
见题目
时间限制:
1000
空间限制:
65536
#include<bits/stdc++.h>
using namespace std;
string s;
int a[10000005];
int main(){
getline(cin,s);
int len=s.size(),j=1,l=0,f=0;
for(int i=0;i<len;i++){
if(s[i]==' '&&f!=1){
a[j]=i-l;
l=i+1;
j++;
f=1;
}else if(s[i]==' '&&f==1){
l=i+1;
}else if(s[i]!=' '){
f=0;
}
}
a[j]=len-l;
cout<<j;
}