1071. Greatest Common Divisor of Strings

先计算最小公倍数,就是可能的最大值;然后分析s1,s2的前k个是否相同,并且是否都能被这几个表示,得到最后结果。

class Solution {
public:
    
    int MCD(int a, int b){
        while(a!=b)
        {
            if(a>b) a=a-b;
            else b=b-a;
        }
        return a;
    }
    
    bool judge(string s, int a){
        for(int i=a;i<s.size();i++){
            if (s[i] != s[i-a]){
                return false;
            }
        }
        return true;
    }
    
    
    string gcdOfStrings(string str1, string str2) {
        int a = MCD(str1.size(), str2.size());
        cout<<a<<endl;
        for (int ii=a;ii>=1;ii--){
            if (judge(str1, ii) && judge(str2, ii)){
                string res1 = str1.substr(0, ii);
                string res2 = str2.substr(0, ii);
                if (res1==res2){
                    return res1;
                }
            }
        }
        return "";
    }
};
发布了361 篇原创文章 · 获赞 18 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/zeroQiaoba/article/details/104480959