Определить длины кратчайшего и самого длинного слов в строке

Задача

В строке, состоящей из слов, разделенных пробелами, определить длину кратчайшего и самого длинного слов.

Решение

 

Описание переменных: 

  • str - исходная строка,
  • len - длина исходной строки,
  • shortest, longest - длины самого короткого и самого длинного слов,
  • current - длина текущего слова.

Алгоритм решения задачи: 

  1. Увеличиваем значение переменной current, пока не встретим пробел. Тем самым узнаем длину текущего слова.
  2. Если очередной символ - это пробел, то сравниваем значение current со значениями записанными в переменных shortest и longest. При необходимости меняем их значения на то, что находится в current. Значение current обнуляем.
  3. Чтобы сравнить длину последнего слова (ведь пробела после него может не быть, и, следовательно, current не сравнивается с shortest и longest), предусмотрено сравнение переменных за циклом.

Программа на языке Паскаль: 

 

var
    str: string;
    len, i: byte;
    shortest, longest, current: byte;
begin
    readln(str);
    len := length(str);
    shortest := 255;
    longest := 0;
    current := 0;
    for i:=1 to len do begin
        if (str[i] <> ' ') then
            current := current + 1
        else begin
            if current < shortest then
                shortest := current;
            if current > longest then
                longest := current;
            current := 0;
        end;
    end;
    if current < shortest then
        shortest := current;
    if current > longest then
        longest := current;
 
    writeln(shortest, ' ', longest);
readln;
end.

 

Тема

Строки

Уровень

Комбинированные задачи

Добавить комментарий