210724 最长最短单词

题目描述

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

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

输入格式

一行句子。

输出格式

第 1 行,第一个最长的单词。

第 2 行,第一个最短的单词。

样例

样例输入

I am studying Programming language C in Peking University
样例输出

Programming
I
数据范围与提示 分类标签

[字符串] [字符数组]

C++题解代码

#include <bits/stdc++.h>
using namespace std;

string s;
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;


// The main procedure
int main() {
  getline(cin, s);
  h = 0;
  g = (-1);
  c = 0;
  f = 999999;
  for (int i = 0; i < s.size(); i++) {
    if ((s[i] == ' ') || (s[i] == ',')) {
      if (h > c) {
        c = h;
        a = g;
        b = i;
      }
      if ((h < f) && (h > 0)) {
        f = h;
        d = g;
        e = i;
      }
      h = 0;
      g = (-1);
    } else {
      if (g == (-1)) {
        g = i;
      }
      h++;
    }
  }
  if (h > c) {
    c = h;
    a = g;
    b = s.size();
  }
  if ((h < f) && (h > 0)) {
    f = h;
    d = g;
    e = s.size();
  }
  for (int j = a; j < b; j++) {
    cout<<s[j];
  }
  cout<<'\n';
  for (int j = d; j < e; j++) {
    cout<<s[j];
  }
  return 0;
}

Blockly题解代码图片