Juice's blogs

2019-10-26

2019-10-26  本文已影响0人  NeverFade

1071. Greatest Common Divisor of Strings

GCD思想

我们学过求最大公约数的函数GCD,本题这是利用此方法进行求解。对于两个字符串,我们要求它们的最大公共重复字串,本质上就是在求两个正整数的最大公约数的问题。与更相减损术一样,两字符串长度不一,检测长的字符串的prefix与短的字符串是否相同,若不同,则无公共字串,然后用长的字符串去掉prefix,再将两字符串送入GCD函数,直到两个字符串完全一样。

class Solution {
public:
    string gcdOfStrings(string str1, string str2) {
        return gcd(str1, str2);
    }
    string gcd(string a, string b){
        if(a.size()<b.size())
            return gcd(b,a);
        if(a==b) return a;
        if(a.substr(0,b.size())!=b)
            return "";
        return gcd(a.substr(b.size()), b);
    }
};
上一篇下一篇

猜你喜欢

热点阅读