Поезд состоит из
спальных вагонов, обозначенных буквой k,
и сидячих вагонов, обозначенных буквой p.
Найдите наибольшее количество спальных вагонов, следующих друг за другом в
поезде.
Вход. В одной строке содержится последовательность букв k и p,
длина которой от 1 до 1000 символов.
Выход. Вывести одно число – наибольшее количество следующих друг
за другом спальных вагонов.
| 
   Пример
  входа  | 
  
   Пример
  выхода  | 
 
| 
   kpkkp  | 
  
   2  | 
 
строки
Анализ алгоритма
В заданной
строке необходимо найти самую длинную подстроку, состоящую только из букв k.
Объявим
переменную temp – счетчик подряд идущих
букв k. Если текущей является буква k, то увеличиваем temp на 1. Иначе сбрасываем temp
в 0. Максимальное достижимое значение temp
равно ответу, подсчитываем его в переменной res.
Пример
Рассмотрим
пример из условия задачи.

Реализация алгоритма
Входную строку храним в массиве s.
char s[1010];
 
Читаем входную строку s.
gets(s);
В переменной temp
подсчитываем количество идущих подряд букв k.
Ответ сохраняем в переменной res.
res = temp = 0;
Перебираем буквы строки s.
for (i = 0; i < strlen(s); i++)
{
Если текущей буквой является k, то увеличим temp на 1.
Иначе ряд из последовательных букв k
обрывается, устанавливаем temp равным
0.
  if (s[i] == 'k') temp++; else
temp = 0;
Ответом является максимальное значение среди всех возможных
значений temp.
  if (temp >
res) res = temp;
}
 
Выводим ответ.
 
printf("%d\n",res);
Реализация
алгоритма – string
Читаем входную
строку s. 
cin >> s;
В переменной temp подсчитываем количество идущих подряд
букв k. Ответ сохраняем в переменной res.
res = temp = 0;
Перебираем буквы
строки s.
for (i = 0; i < s.size(); i++)
{
Если текущей
буквой является k, то увеличим temp на 1. Иначе ряд из последовательных
букв k обрывается, устанавливаем temp равным 0.
  if (s[i] == 'k') temp++; else temp = 0;
Ответом является
максимальное значение среди всех возможных значений temp.
  if (temp > res)
res = temp;
}
Выводим ответ.
cout << res << endl;
Реализация алгоритма – форматированный ввод
#include <cstdio>
#include <cstring>
char s[1010];
int res, len;
int main() 
{
  res = 0;
  scanf("%[p]",s);
  while(scanf("%[k]",s) == 1)
  {
    len = strlen(s);
    if (len > res) res = len;
    scanf("%[p]",s);
  }
  printf("%d\n",res);
  return 0;
}
Java реализация
import java.util.*;
public class Main
{
  public static void main(String []args)
  {
    Scanner con = new Scanner(System.in);
    String s = con.nextLine();
    int res = 0, temp = 0;
    for (int i = 0; i < s.length(); i++)
    {
      if (s.charAt(i) == 'k') temp++; else temp = 0;
      if (temp > res) res = temp;
    }
    System.out.println(res);
    con.close();
  }
}    
Python
реализация
s = input()
В переменной c подсчитываем количество идущих подряд
букв k. Ответ сохраняем в переменной res.
c = res = 0
Перебираем буквы
строки s.
for x
in s:
Если текущей
буквой является k, то увеличим c на 1. Иначе ряд из последовательных
букв k обрывается, устанавливаем c равным 0.
 
if x == 'k':
   
c += 1
 
else: c = 0
Ответом является
максимальное значение среди всех возможных значений c.
  res = max(res, c)
Выводим ответ.
print(res)