043:最长最短单词

先看看题目叭:

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

样例输入

I am studying Programming language C in Peking University

样例输出

Programming
I

思路:

利用字符串 不将这一串单词一起输入,而是利用cin的特性 (遇到空格就停止输入) 一个单词一个单词的输入,然后利用OJ平台的特性(“while(cin>>s)”),来结束输入
利用的函数 s.sizeof() 来求长度,其实不用这个也没事,用一个计数器每次加1就行,然后在重置为0
这个应该是比较方便的,如果用字符串,,是听麻烦的

最后如果觉得有用,请给我这个小萌新一个赞叭

#include 
#include 
using namespace std;
int main()
{
    string s, s1, s2; //s是输入的 s1是最大的  s2是最小的
    int p;            //存放每次输入的字符串的长度
    int t = 0;        //用来标记第一次
    int max, min;     //最大最小的长度
    while (cin >> s)  //每次输入s,当在键盘敲 ctrl+z 时停止输入,在OJ上:在文件输入完毕后结束
    {
        for (int i = 0; i < s.size(); i++)
        {
            if (isalpha(s[i])) //判断每一位元素,如果不是字母就每次求长度
            {
                p = s.size(); //最后一次也就是当前单词的长度了
            }
            else
                break; //i的指向是 空格 或 , 时,当前的一个单词就已经搞完了
        }
        // cout << "==" << count << "    max=" << max << endl; 测试用的
        if (t == 0) //如果是第一次
        {
            max = min = p; //先给max,min初值
            s1 = s2 = s;   //如果第一个就是最大最小的情况
            t = 1;
        }
        if (max < p) //比较长度
        {
            max = p;
            s1 = s; //字符串赋值
        }
        if (min > p)
        {
            min = p;
            s2 = s;
        }
    }
    cout << s1 << endl
         << s2;
    return 0;
}

你可能感兴趣的:(杂题)