在 JavaScript 中查找两个字符串的 gcd

在数系统中,两个数的最大公约数 (GCD) 是将两个数相除的最大数。类似地,如果我们将此概念应用于字符串,则两个字符串的 gcd 是两个字符串中都存在的最大子字符串(长度最大)。

例如 -

如果两个字符串是 -

const str1 = 'abcabc';
const str2 = 'abc';

那么这些字符串的 gcd 将是 -

const gcd = 'abc';

我们需要编写一个 JavaScript 函数,它接受两个字符串 str1 和 str2 并计算并返回它们的 gcd。

示例

此代码将是 -

const str1 = 'abcabc';
const str2 = 'abc';
const findGCD = (str1 = '', str2 = '') => {
   if (str1 + str2 !== str2 + str1){
      // 不可能
      // 没有共同元素
      return "";
   } else if (str1 == str2){
      return str1;
   } else if (str1.length > str2.length){
      return findGCD(str1.slice(str2.length), str2);
   } else {
      return findGCD(str2.slice(str1.length), str1);
   }
};
console.log(findGCD(str1, str2));
输出结果

控制台中的输出将是 -

abc