对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。
返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。
class Solution {
public String gcdOfStrings(String str1, String str2) {
if (!(str1 + str2).equals(str2 + str1)) return "";
return str1.substring(0, gcd(str1.length(), str2.length()));
}
//辗转相除法:gcd(a, b) = gcd(b, a % b)
//当一直循环,直到b为0,那么a为最大公因数
private int gcd(int len1, int len2) {
return len2 == 0 ? len1 : gcd(len2, len1 % len2);
}
}
做的时候没什么好的思路,看了题解后,知道了辗转相除法后,做起来就容易了很多。