leetcode1071: НОД строка

Название понял смысл заданного str1 и str2 две строки, строки делящиеся требования X.

Делимые означает, что str1 и str2 могут быть представлены многократным X.

Х в виде строки, строку размера больше или равно 1.

str1 = АХ
str2 = ВХ

Цель состоит в том, чтобы искать X.

Из приведенной выше формулы, может быть сначала определить, является ли делимое, может делиться, когда, чтобы удовлетворять: str1 + str2 = str2 + str1

Затем, после удовлетворения делятся на алгоритме GCD, т.е. алгоритм Евклида.

Евклидово: наибольший общий делитель двух чисел равно числу два больших / меньшего числа, а остальная часть разделенного на числе два общих делителя

Взгляд заключается в использовании рекурсивного подхода, деленный на числе два, пока остаток не равен 0, то наибольший общий делитель двух чисел равен текущий делитель.

Независимо от длины str1 и str2, потому что [наибольший общий делитель двух чисел равно числу два больших / меньшие числа и два числа, разделенные на наибольший общий делитель остатка]

Возьмите большую / меньшую, чем количество остатка и идут просто отлично.

  int gcd(int a,int b) { return !b? a:gcd(b,a%b); }

    string gcdOfStrings(string str1, string str2) {
           return (str1+str2) == (str2 + str1) ? str1.substr(0, gcd( str1.size(), str2.size()))  : "";
    }
Опубликовано 44 оригинальные статьи · вона похвала 51 · просмотров 80000 +

рекомендация

отblog.csdn.net/Hanghang_/article/details/104906066