В информатике важную роль играют алгоритмы поиска вхождения подстроки в строку. Например, в строке «АБРАКАДАБРА» подстрока «БРА» встречается два раза, а подстрока из одного символа «А» встречается пять раз. Под количеством вхождений понимается количество выбрать несколько подряд идущих символов, совпадающих (в том же порядке) с искомой подстрокой. Найденные вхождения могут пересекаться, то есть один символ может быть составной частью нескольких вхождений. Интерес представляют эффективные алгоритмы поиска вхождений подстроки в строку, то есть алгоритмы, быстро работающие для больших строк. Поэтому мы будем рассматривать в этой задаче случай, когда исходная строка представляет собой многократное повторение какой-то маленькой строки.
Например, рассмотрим строку «МАМА» и повторим её 3 раза. Получится строка «МАМАМАМАМАМА». В этой строке подстрока «АМА» встречается 5 раз: «МАМАМАМАМАМА», «МАМАМАМАМАМА», «МАМАMАМАМАМА», «МАМАМАМАМАМА», «МАМАМАМАМАМА».
ответьте на вопросы
Если строку «БАОБАБ» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «БА»?
Если строку «РЕМАРКА» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «АР»?
Если строку «АУАУОАУАУ» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «АУАУ»?
Если строку «ОЙОЙ» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «ЙОЙОЙ»?
Если строку «А» повторить 100 раз, то сколько в ней раз будет встречаться подстрока «A», повторённая 50 раз?
ответ на это задание запишите в виде пяти чисел, каждое число в отдельной строке — ответы на заданные вопросы именно в таком порядке. Если вы не можете найти ответ на какой-то из пяти вопросов, запишите в этой строке любое натуральное число.
1. Основные понятия Основные функции обработки строк Посимвольная обработка строки Формирование массива слов строки Формирование строки из массива слов Слова-палиндромы Выделение чисел из строки Сравнение строк Обработка многострочного текста...30 Приложение Приложение Приложение Список литературы...37
2 2 1. Основные понятия Строка это некоторый набор символов, в том числе и пустой. Для обозначения строки используются кавычки ("). Пустая строка обозначается парой кавычек, между которыми нет ни одного символа, в том числе и пробела (s =""). Строки описываются с типа String. Каждая строка может содержать до двух миллиардов символов в формате Unicode. Объем памяти, занимаемой строковой переменной, зависит от количества символов в этой строке. Чем больше символов, тем больше памяти требуется для хранения этой строки. Число символов в строке называется длиной строки. Длина пустой строки равна нулю. Все символы в строке последовательно пронумерованы. Нумерация идет слева направо и начинается с единицы. Номер символа в строке также называют позицией символа. Подстрока это любой фрагмент строки, состоящий хотя бы из одного символа исходной строки. Например, в строке "электростанция" содержится подстрока "рост". Левой подстрокой называется такая подстрока, которая начинается с первого символа исходной строки. В нашем случае левой подстрокой будет "элек". Правая подстрока это подстрока, которая заканчивается последним символом исходной строки. В нашем примере это будет подстрока "станция". Конкатенацией двух строк s1 и s2 называется строка s, для которой s1 является левой подстрокой, s2 правой подстрокой, а длина строки s равна сумме длин строк s1 и s2. Часто конкатенацию называют сложением или склейкой строк. В Visual Basic 2005 она обозначается знаком плюс. s = s1 + s2 1 Строковое выражение это либо отдельная строка, либо строка и строковое выражение, между которыми стоит знак конкатенации. 2. Основные функции обработки строк Strings.Len(Строка) возвращает количество символов в строке, то есть ее длину. Например, Strings.Len("Окно") вернет значение 4. 1 Также допускается следующая запись конкатенации. s = s1 & s2
3 3 Strings.Left(Строка, Длина) выделяет левую подстроку указанной Длины из заданной Строки. Например, Strings.Left("Пароход", 3) вернет строку "Пар". Strings.Right(Строка, Длина) выделяет правую подстроку указанной Длины из заданной Строки. Например, Strings.Right("Пароход", 3) вернет строку "ход". Strings.Mid(Строка, Позиция, Длина) выделяет подстроку заданной Длины из исходной Строки, начиная с указанной Позиции. Например, Strings.Mid("Пароход", 2, 4) вернет строку "арох". Параметр Длина может отсутствовать. В этом случае функция Strings.Mid возвращает правую подстроку, которая начинается с заданной Позиции. Например, Strings.Mid("Пароход", 4) вернет строку "оход". Функция Mid может стоять не только справа от знака присваивания, но и слева. В этом случае префикс Strings не ставится. Если функция Mid стоит слева от знака присваивания, то соответствующая подстрока исходной Строки будет заменена на значение строкового выражения, стоящего в правой части оператора присваивания. При этом длина исходной строки не меняется. Примеры: 1. s = "Иванов" Mid(s, 1, 4) = "Петр" После выполнения оператора присваивания в переменную s будет записано "Петров". То есть первые четыре символа исходной строки будут заменены на четыре символа из другой строки. 2. s = "Иванов" Mid(s, 1, 4) = "Пят" После выполнения оператора присваивания в переменную s будет записано "Пятнов". Так как во второй строке всего три символа, то в исходной строке будут изменены только первые три символа, а четвертый останется неизменным. 3. s = "Иванов" Mid(s, 1, 3) = "Александр" После выполнения оператора присваивания в переменную s будет записано "Аленов". Первые три символа исходной строки меняются на
4 4 первые три символа второй строки. Остальная часть второй строки в преобразовании не участвует.
Объяснение: