Leetcode1071:字符串的最大公因子(java)

题目描述

对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。

返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。

示例 1:

输入:str1 = “ABCABC”, str2 = “ABC”
输出:“ABC”

示例 2:

输入:str1 = “ABABAB”, str2 = “ABAB”
输出:“AB”

示例 3:

输入:str1 = “LEET”, str2 = “CODE”
输出:""

提示:

  1. 1 <= str1.length <= 1000
  2. 1 <= str2.length <= 1000
  3. str1[i] 和 str2[i] 为大写英文字母

思路分析

在这里插入图片描述

代码实现

public class GcdOfStrings {

	public static void main(String[] args) {

	}

	public String gcdOfStrings(String str1, String str2) {
		// 假设str1是N个x,str2是M个x,那么str1+str2肯定是等于str2+str1的。
		if (!(str1 + str2).equals(str2 + str1)) {
			return "";
		}
		// 辗转相除法求gcd
		return str1.substring(0, gcd(str1.length(), str2.length()));
	}

	private int gcd(int a, int b) {
		return b == 0 ? a : gcd(b, a % b);
	}
}

发布了88 篇原创文章 · 获赞 27 · 访问量 5908

猜你喜欢

转载自blog.csdn.net/weixin_43362002/article/details/104815250
今日推荐