[每日一题系列] LeetCode 1071. 字符串的最大公因子

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

[每日一题系列] LeetCode 1071. 字符串的最大公因子

JethroYu   2020-03-12 我要评论

题目

对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 来源:力扣(LeetCode) 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

首先假设这两个字符串都是由一个(且最长)子串X生成的,那么很容易想到S串和T串都是X的重复,则S=k个X,T=n个X,则S+T == T+S == (k+n)个X 则如果S+T == T+S,则有解,否则直接返回空串表示无解。 然后S和T都是X的倍数,则最长X为他们长度的最大公因子(题目都写了)

代码

```java public class Solution { public String gcdOfStrings(String str1, String str2) { if ((str1+str2).equals(str2+str1)) return str1.substring(0,GCD(str1.length(),str2.length())); else return ""; } public int GCD(int a,int b) { if(a==0) return b; if(b==0) return a; if(!(a%2==1)&&!(b%2==1)) { return GCD(a>>1,b>>1)<<1; } else if(!(b%2==1)) { return GCD(a,b>>1); } else if(!(a%2==1)) { return GCD(a>>1,b); } else { return GCD(Math.abs(a-b),Math.min(a,b)); } } } ```

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们