Программа Python3 для проверки, может ли данная строка быть образована двумя другими строками или их перестановками

Опубликовано: 20 Сентября, 2022

Учитывая строку str и массив строк arr[] , задача состоит в том, чтобы проверить, может ли данная строка быть образована любой парой строк из массива или их перестановками. Примеры:

Input: str = “amazon”, arr[] = {“loa”, “azo”, “ft”, “amn”, “lka”} Output: Yes The chosen strings are “amn” and “azo” which can be rearranged as “amazon”. Input: str = “geeksforgeeks”, arr[] = {“geeks”, “geek”, “for”} Output: No

Метод 1. В этом подходе мы начинаем с сортировки заданной строки, затем запускаем два вложенных цикла, чтобы одновременно выбрать две строки из заданного массива и объединить их. Затем мы сортируем результирующую строку, которую мы получили после конкатенации.
Затем мы сравниваем эту строку с заданной строкой и проверяем, равны они или нет. Если найдены равные, мы возвращаем true.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(nlogn+m 2 klogk), где n — размер заданной строки, m — размер данного массива, а k — максимальный размер, полученный путем сложения любых двух строк (который в основном является суммой размер двух самых длинных строк в данном массиве).

Метод 2. Сортировка подсчетом может использоваться для сокращения времени выполнения описанного выше подхода. Сортировка подсчетом использует таблицу для хранения количества каждого символа. У нас есть 26 алфавитов, поэтому мы создаем массив размером 26 для хранения количества каждого символа в строке. Затем возьмите символы в порядке возрастания, чтобы получить отсортированную строку. Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(n+m 2 k), где n — размер заданной строки, m — размер заданного массива, а k — максимальный размер, полученный путем сложения любых двух строк (что в основном является суммой размер двух самых длинных строк в данном массиве).

Пожалуйста, обратитесь к полной статье о проверке, может ли данная строка быть образована двумя другими строками или их перестановками для получения более подробной информации!

РЕКОМЕНДУЕМЫЕ СТАТЬИ