【描述】
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
【输入】
一行句子。
【输出】
两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。
【样例输入】
I am studying Programming language C in Peking University
【样例输出】
Programming
I
【提示】
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
【参考程序】
C++版本
方法一:
方法二:
- # include <iostream>
- # include <string>
- using namespace std;
- int main()
- {
- string s;
- getline(cin, s, '\n');
- s += ' ';
- int len = s.size();
- int i = 0, max_len = 0, min_len = 101, j = 0, x, y;
- for (i = 0; i < len; i++)
- {
- if (s[i] != ' ' && s[i] != ',')
- {
- j++;
- }
- else if (j > 0)
- { //第一个符号可能是空格或逗号
- if (j > max_len)
- {
- max_len = j;
- x = i - j;
- }
- if (j < min_len)
- {
- min_len = j;
- y = i - j;
- }
- j = 0;
- }
- }
- cout << s.substr(x, max_len) << endl;
- cout << s.substr(y, min_len);
- return 0;
- }
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string s;
- getline(cin, s, '\n');
- s += ' ';
- int i = 0;//利用前后索引的方法
- int min_len = 101, max_len = 0;
- string min_s, max_s;
- while (i < s.size())
- {
- int j = i;
- while (s[j] != ' ' && s[j] != ',')
- {
- j += 1;
- }
- if (j == i)
- {
- i += 1;
- continue;
- }
- string t = s.substr(i, j - i);
- if (t.size() < min_len)
- {
- min_len = t.size();
- min_s = t;
- }
- if (t.size() > max_len)
- {
- max_len = t.size();
- max_s = t;
- }
- i = j + 1;
- }
- cout << max_s << endl;
- cout << min_s;
- return 0;
- }