leetcode 1071. 字符串的最大公因子

思路:看了一个大佬的题解,非常的巧妙。

首先,str1和str2一定是由相同的子串构成的,只不过子串的数量不同而已,所以str1+str2==str2+str1. 若不满足前面的等式,那么表示没有相同的子串。

其次,假设str1的长度是m构成,str2的长度是n. 那么最大的子串长度一定能同时整除m,n。 其实最大长度就是gcd(m,n)。

class Solution {
public:
    string gcdOfStrings(string str1, string str2) {
        int len1=str1.size(),len2=str2.size();
        if(str2+str1!=str1+str2) return "";
        return str1.substr(0,gcd(len1,len2));
    }
    int gcd(int a,int b)
    {
        if(b==0) return a;
        return gcd(b,a%b);
    }
};
发布了417 篇原创文章 · 获赞 172 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_40774175/article/details/104811252
今日推荐