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

痞子三分冷 提交于 2020-03-12 09:27:21

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

首先,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);
    }
};

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!