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);
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值