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

题目

对于字符串 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)); } } } ```
posted @   JethroYu  阅读(242)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示