Программа C++ для проверки того, являются ли строки вращением друг друга или нет

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

Имея строку s1 и строку s2, напишите фрагмент, чтобы сказать, является ли s2 вращением s1? (например, если s1 = ABCD и s2 = CDAB, вернуть true, если s1 = ABCD и s2 = ACBD, вернуть false) Алгоритм: areRotations(str1, str2)

    1. Create a temp string and store concatenation of str1 to
       str1 in temp.
                          temp = str1.str1
    2. If str2 is a substring of temp then str1 and str2 are 
       rotations of each other.

    Example:                 
                     str1 = "ABACD"
                     str2 = "CDABA"

     temp = str1.str1 = "ABACDABACD"
     Since str2 is a substring of temp, str1 and str2 are 
     rotations of each other.

Выход:

Strings are rotations of each other

Временная сложность: O(n*n), где n — длина строки.

Используемые библиотечные функции: strstr: strstr находит подстроку в строке. Прототип: char * strstr(const char *s1, const char *s2); Подробнее см. http://www.lix.polytechnique.fr/Labo/Leo.Liberti/public/computing/prog/c/C/MAN/strstr.htm. strcat: strncat объединяет две строки Прототип: char *strcat(char *dest, const char *src); Подробнее см. http://www.lix.polytechnique.fr/Labo/Leo.Liberti/public/computing/prog/c/C/MAN/strcat.htm. Временная сложность: временная сложность этой задачи зависит от реализации функция стрстр. Если реализация strstr выполняется с помощью сопоставителя KMP, то сложность приведенной выше программы равна (-)(n1 + n2), где n1 и n2 — длины строк. Сопоставителю KMP требуется (-)(n) времени, чтобы найти подстроку в строке длины n, где предполагается, что длина подстроки меньше, чем длина строки. Пожалуйста, обратитесь к полной статье о программе, чтобы проверить, являются ли строки вращением друг друга или нет для получения более подробной информации!

C++