Матч
320, Сегмент строки (StringSegment)
Дивизион 2,
Уровень 1
Имеется строка, состоящая из
нескольких сегментов одинаковых букв. Например, строка “aaabbaaac” состоит из четырех сегментов: “aaa”, “bb”, “aaa” и “c”. По
заданной строке необходимо вычислить среднюю длину таких сегментов.
Класс: StringSegment
Метод: double average(string s)
Ограничения:
s содержит от 1 до 50 символов ‘a’ – ‘z’.
Вход. Строка s.
Выход. Среденее значение длины
сегментов, состоящих из одинаковых букв.
Пример входа
s |
“aaabbaaac” |
“aabbccdd” |
“abba” |
Пример выхода
2.25
2.0
1.33333333
РЕШЕНИЕ
обработка строк
Находим количество пар разных
соседних букв. Оно равно числу сегментов одинаковых букв минус один. Разделим
количество букв в строке на число сегментов, получим среднее значение длин последних.
ПРОГРАММА
#include <cstdio>
#include <string>
using namespace std;
class StringSegment
{
public:
double average(string s)
{
int i, c = 1;
for(i = 0; i < s.size() - 1; i++)
if (s[i] != s[i + 1]) c++;
return 1.0 * s.size() / c;;
}
};