R:最长最短单词
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
- 输入
- 一行句子。
- 输出
- 两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。 - 样例输入
-
I am studying Programming language C in Peking University
- 样例输出
-
Programming I
#include<iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); int sum = 0; int pos1, pos2, i, max = 0, min = 1000; for (i = 0; i < s.size(); ++i) { if (s[i] != ' '&&s[i] != ',') { sum++; } else if (sum > 0) { if (sum > max) { max = sum; pos1 = i; } if (sum < min) { min = sum; pos2 = i; } sum = 0; } } int j; for (j = pos1 - max; j < pos1; ++j) { cout << s[j]; } cout << endl; for (j = pos2 - min; j < pos2; ++j) { cout << s[j]; } return 0; }//这个有点问题
1 #include<string.h> 2 #include<iostream> 3 using namespace std; 4 5 string s; 6 7 int main() 8 { 9 10 getline(cin, s); 11 int cnt=0; 12 int x1=-1; 13 int y1=-1; 14 int x2=-1; 15 int y2=-1; 16 int maxx=0; 17 int minn=200; 18 19 for(int i=0;i<s.size();i++) 20 { 21 if(i==s.size()-1||s[i]==' '||s[i]==',') 22 { 23 if(i>0&&(s[i-1]==' '||s[i-1]==',')) 24 { 25 y1=i; 26 y2=i; 27 continue; 28 } 29 if(i==s.size()-1) 30 { 31 cnt++; 32 } 33 if(cnt>maxx) 34 { 35 maxx=cnt; 36 x1=y1; 37 } 38 if(cnt<minn) 39 { 40 minn=cnt; 41 x2=y2; 42 } 43 y1=i; 44 y2=i; 45 cnt=0; 46 } 47 else 48 { 49 cnt++; 50 } 51 52 } 53 54 for(int i=x1+1;i<x1+maxx+1;i++) 55 { 56 cout<<s[i]; 57 } 58 cout<<endl; 59 for(int i=x2+1;i<x2+minn+1;i++) 60 { 61 cout<<s[i]; 62 } 63 64 65 return 0; 66 }
道阻且长,行则将至