1071. Greatest Common Divisor of Strings

Leetcode link

题目简介

/**
 * @param {string} str1
 * @param {string} str2
 * @return {string}
 */

题目给我们两个字符串 str1 与 str2

要求我们找出能同时除尽两个字符串的最长字符串

除尽指的是该字符串经过自身连接一次或多次可以组成另一个字符串

解题思路

这题要分为两步来求解:

  1. 判断是否存在可同时除尽两个字符串的字符串
  2. 求出可除尽的最长的字符串是什么

第一个部分,我们可以通过 str1 + str2 === str2 + str1 来判断,如果成立,则表示存在目标字符串

第二个部分,我们需要找到两个字符串长度的最大公因数 GCD,求出来的 GCD 就是目标字符串的长度

Javascript

/**
 * @param {string} str1
 * @param {string} str2
 * @return {string}
 */
var gcdOfStrings = function(str1, str2) {
    if(str1 + str2 !== str2 + str1) {
        return ''
    }

    const gcd = (len1, len2) => {
        while(len2 !== 0) {
            ;[len1, len2] = [len2, len1 % len2]
        }
        return len1
    }

    return str1.slice(0, gcd(str1.length, str2.length))
};

results matching ""

    No results matching ""