public static int gcd(int x, int y){
//辗转相除法求两数的最大公约数
do{
int temp = x;
x = Math.max(x, y);
if(x != temp) y = temp;
if(x % y == 0)
return y;
x = x % y;
}while(x % y != 0);
return y;
}
public static String gcdOfStrings(String str1, String str2) {
/*
如果str1+str2和str2+str1不相等,则一定没有最大公因子,例如
("abcab" + "abc" = "abcababc") != ("abc" + "abcab" = "abcabcab")
*/
if(!(str1 + str2).equals(str2 + str1)) return "";
//两字符串若有最大公因子,则该公因子的长度应为它们各自长度的最大公约数
return str1.substring(0, gcd(str1.length(), str2.length()));
}
LeetCode算法题:1071. 字符串的最大公因子
最新推荐文章于 2024-09-13 17:32:36 发布