Название понял смысл заданного 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())) : "";
}