ACM——最长最短单词 (转)

描述

输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。

试输出第1个最长的单词和第1个最短单词。 

输入一行句子。输出两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。样例输入

I am studying Programming language C in Peking University

样例输出

Programming
I

提示如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。

/*****************************************************************************/

自己本来的思路是:

记录下空格跟逗号的位置,调试完成后,发现当输入只有字符没有空格或者逗号的时候,解不出来。。。。

实在想不出,就百度了。现在贴出,方便自己日后复习。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 char juzi[20001];
 6 
 7 main()
 8 {
 9     char maxw[101], minw[101], use[101];
10     int maxlen = 0, minlen = 101, k = 0, len = 0;
11     int i = 0, j = 0;
12     gets(juzi);
13     
14     while (juzi[i] != '\0')
15     {
16         if(juzi[i] == ' ' || juzi[i] == ',')
17         {
18             if (k == 1)
19             {
20                 use[j] = '\0';
21                 len = strlen(use);
22                 if (maxlen < len)
23                 {
24                     maxlen = len;
25                     strcpy(maxw, use);
26                 }
27                 if (minlen > len)
28                 {
29                     minlen = len;
30                     strcpy(minw, use);
31                 }
32                 k = 0;
33                 j = 0;
34             }
35         }
36         else
37         {
38             use[j] = juzi[i];
39             k = 1;
40             j++;
41         }
42         i++;
43     }
44     
45     use[j] = '\0';
46     len = strlen(use);
47     if (maxlen < len)
48     {
49         maxlen = len;
50         strcpy(maxw, use);
51     }
52     if (minlen > len)
53     {
54         minlen = len;
55         strcpy(minw, use);
56     }
57     
58     cout << maxw << endl;
59     cout << minw << endl;
60     
61     return 0;
62 }

 出处:https://www.cnblogs.com/huashanqingzhu/p/5075332.html

猜你喜欢

转载自www.cnblogs.com/boniface/p/9879435.html