Наивный алгоритм: используя два вложенных цикла, проверить все подстроки, являются ли они палиндромами. Такой алгоритм будет работать O(|S|^2), что при ограничении |S| <= 10^5 потребует примерно 10^10 / 2 сравнений, что достаточно долго.
Оптимизация: в центре у палиндрома четной длины всегда пара одинаковых символов. Их можно найти, а затем увеличивать длину до тех пор, пока это возможно. Плюс этого наблюдения в том, что если пара попадется не в центре, то максимальная длина подстроки-палиндрома с центром в этой паре, будет ограничена сверху. Однако в худшем случае (все символы одинаковы) всё равно придется произвести немалое число сравнений.
Однако задачу можно решить и за линейное время. Например, существует алгоритм Манакера, основанный на том, что можно использовать информацию, что часть строки является палиндромом. А именно, если в длинную-длинную строку-палиндром входит другая подстрока-палиндром, то можно не начинать проверку заново, а использовать уже имеющуюся информацию.
Пример 1: "длинная" подстрока-палиндром: cbbaabbaabbc в которой известна подстрока-палиндром. Тогда в строке есть симметричная подстрока-палиндром: cbbaabbaabbc Пример 2: "длинная" подстрока палиндром: bbaabbaabbaa Зная, что в ней есть подстрока-палиндром bbaabbaabbaa, можно явные сравнения для подстроки с центром в bbaabbaabbaa начинать уже с bbaabbaabbaa
Если не хочется писать самостоятельно, алгоритм Манакера легко находится.
В этом методическом руководстве описаны принципы организации конвертации данных и обмена данными между типовыми конфигурациями на платформах "1С:Предприятие 8" и "1С:Предприятие 7.7" при конфигурации "Конвертация данных 2.0". При написании данного материала мы решили пойти по пути демонстрации общей концепции конфигурации "Конвертация данных 2.0" и приемов работы посредством разбора типичных ситуаций, возникающих в практике конвертации данных между типовыми конфигурациями. Как показывает опыт, такой изложения наиболее эффективен, поскольку позволяет специалисту быстро приобрести навыки использования средств конфигурации в своей повседневной деятельности.
Для работы с методическим руководством вам понадобится конфигурация "Конвертация данных 2.0" версии 2.09.1, внешние обработки MD80Exp.epf и V8Exchan.epf, поставляемые с релизом конфигурации "Конвертация данных 2.0". Для реализации механизма обмена данными, описанного в руководстве, необходима конфигурация "Управление торговлей 10.2" версии 10.2.5 или выше.
Общие принципы конвертации данных
Конфигурация "Конвертация данных 2.0" является мощным средством для организации конвертации данных между конфигурациями любой структуры и сложности, функционирующими как на платформе "1С:Предприятие 7.7", так и на платформе "1С:Предприятие 8". Рассмотрим общую схему конвертации данных между конфигурациями, созданными на платформе "1С:Предприятие 8".
Обмен данными по технологии "Конвертация данных 2.0" можно разделить на две стадии – стадию подготовки правил обмена и стадию обмена данными. Самым сложным и ответственным этапом, безусловно, является подготовка правил обмена. Процесс подготовки правил обмена представлен на схеме 1. Как видно на схеме, основным "сырьем" для подготовки правил выступает XML-описание структуры метаданных информационных баз, которые участвуют в обмене. Описание метаданных готовится с внешней обработки MD80Exp.epf (для конфигураций на платформе "1С:Предприятие 8") в виде XML-файла. Затем этот файл обрабатывается средствами конфигурации "Конвертация данных 2.0". В базе конвертации создаются специализированные объекты для описания метаданных, на основе которых будут готовиться правила обмена данными.
Ключевые задачи при подготовке правил обмена – настройка соответствий между объектами метаданных конфигураций источника и приемника и настройка соответствий между свойствами объектов (реквизитами объектов и табличных частей). Процесс подготовки файла обмена заканчивается генерацией XML-файла правил и условно разделяется на следующие этапы:
Установка конфигураций источника и приемника, общая настройка правил обмена.
Настройка соответствий между объектами метаданных источника и приемника – создание правил конвертации объектов.
Настройка соответствий между свойствами объектов в рамках правил конвертации объектов, в том числе установка соответствий значений перечислений – создание правил конвертации свойств и правил конвертации значений.
Настройка принципов выборки объектов для выгрузки – создание правил выгрузки.
Настройка операций, проводящихся перед загрузкой данных, – создание правил очистки данных.
Дополнительная настройка обработчиков событий.
Содержание этих технологических этапов будет развернуто при разборе примера в следующих параграфах руководства. Поэтому для лучшего понимания рекомендуем в процессе изучения примера по созданию правил обмена обращаться к технологическим схемам.
Оптимизация: в центре у палиндрома четной длины всегда пара одинаковых символов. Их можно найти, а затем увеличивать длину до тех пор, пока это возможно. Плюс этого наблюдения в том, что если пара попадется не в центре, то максимальная длина подстроки-палиндрома с центром в этой паре, будет ограничена сверху. Однако в худшем случае (все символы одинаковы) всё равно придется произвести немалое число сравнений.
Однако задачу можно решить и за линейное время. Например, существует алгоритм Манакера, основанный на том, что можно использовать информацию, что часть строки является палиндромом. А именно, если в длинную-длинную строку-палиндром входит другая подстрока-палиндром, то можно не начинать проверку заново, а использовать уже имеющуюся информацию.
Пример 1: "длинная" подстрока-палиндром:
cbbaabbaabbc
в которой известна подстрока-палиндром. Тогда в строке есть симметричная подстрока-палиндром:
cbbaabbaabbc
Пример 2: "длинная" подстрока палиндром:
bbaabbaabbaa
Зная, что в ней есть подстрока-палиндром
bbaabbaabbaa,
можно явные сравнения для подстроки с центром в
bbaabbaabbaa
начинать уже с
bbaabbaabbaa
Если не хочется писать самостоятельно, алгоритм Манакера легко находится.
В этом методическом руководстве описаны принципы организации конвертации данных и обмена данными между типовыми конфигурациями на платформах "1С:Предприятие 8" и "1С:Предприятие 7.7" при конфигурации "Конвертация данных 2.0". При написании данного материала мы решили пойти по пути демонстрации общей концепции конфигурации "Конвертация данных 2.0" и приемов работы посредством разбора типичных ситуаций, возникающих в практике конвертации данных между типовыми конфигурациями. Как показывает опыт, такой изложения наиболее эффективен, поскольку позволяет специалисту быстро приобрести навыки использования средств конфигурации в своей повседневной деятельности.
Для работы с методическим руководством вам понадобится конфигурация "Конвертация данных 2.0" версии 2.09.1, внешние обработки MD80Exp.epf и V8Exchan.epf, поставляемые с релизом конфигурации "Конвертация данных 2.0". Для реализации механизма обмена данными, описанного в руководстве, необходима конфигурация "Управление торговлей 10.2" версии 10.2.5 или выше.
Общие принципы конвертации данных
Конфигурация "Конвертация данных 2.0" является мощным средством для организации конвертации данных между конфигурациями любой структуры и сложности, функционирующими как на платформе "1С:Предприятие 7.7", так и на платформе "1С:Предприятие 8". Рассмотрим общую схему конвертации данных между конфигурациями, созданными на платформе "1С:Предприятие 8".
Обмен данными по технологии "Конвертация данных 2.0" можно разделить на две стадии – стадию подготовки правил обмена и стадию обмена данными. Самым сложным и ответственным этапом, безусловно, является подготовка правил обмена. Процесс подготовки правил обмена представлен на схеме 1. Как видно на схеме, основным "сырьем" для подготовки правил выступает XML-описание структуры метаданных информационных баз, которые участвуют в обмене. Описание метаданных готовится с внешней обработки MD80Exp.epf (для конфигураций на платформе "1С:Предприятие 8") в виде XML-файла. Затем этот файл обрабатывается средствами конфигурации "Конвертация данных 2.0". В базе конвертации создаются специализированные объекты для описания метаданных, на основе которых будут готовиться правила обмена данными.
Ключевые задачи при подготовке правил обмена – настройка соответствий между объектами метаданных конфигураций источника и приемника и настройка соответствий между свойствами объектов (реквизитами объектов и табличных частей). Процесс подготовки файла обмена заканчивается генерацией XML-файла правил и условно разделяется на следующие этапы:
Установка конфигураций источника и приемника, общая настройка правил обмена.
Настройка соответствий между объектами метаданных источника и приемника – создание правил конвертации объектов.
Настройка соответствий между свойствами объектов в рамках правил конвертации объектов, в том числе установка соответствий значений перечислений – создание правил конвертации свойств и правил конвертации значений.
Настройка принципов выборки объектов для выгрузки – создание правил выгрузки.
Настройка операций, проводящихся перед загрузкой данных, – создание правил очистки данных.
Дополнительная настройка обработчиков событий.
Содержание этих технологических этапов будет развернуто при разборе примера в следующих параграфах руководства. Поэтому для лучшего понимания рекомендуем в процессе изучения примера по созданию правил обмена обращаться к технологическим схемам.
Объяснение: