21xrx.com
2024-11-25 17:23:01 Monday
登录
文章检索 我的文章 写文章
我喜欢用Java编程
2023-06-11 05:34:59 深夜i     --     --

我喜欢用Java编程,最近开始学习如何求算法,其中涉及到的一个重要概念就是最大公约数和最大公共子串。今天我想为大家分享一下在Java中如何求算法。

最大公约数是指两个数中最大的能够整除它们的数,通常用gcd(Greatest Common Divisor)表示。求最大公约数有很多算法,其中比较常见的是辗转相除法。我们可以通过以下Java代码实现:


public static int gcd(int a, int b) { 

  if(a % b == 0)  

    return b; 

   else { 

    return gcd(b, a % b); 

  } 

}

最大公共子串则是指两个字符串中最长的公共子串,通常用LCS(Longest Common Substring)表示。求最大公共子串也有很多算法,如暴力法、动态规划等。我们可以通过以下Java代码实现:


public static String lcs(String s1, String s2){ 

  int len1 = s1.length(); 

  int len2 = s2.length(); 

  int[][] dp = new int[len1 + 1][len2 + 1]; 

  int maxLen = 0; 

  int end = 0; 

  for(int i = 1; i <= len1; i++){ 

    for(int j = 1; j <= len2; j++){ 

      if(s1.charAt(i - 1) == s2.charAt(j - 1)){ 

        dp[i][j] = dp[i - 1][j - 1] + 1; 

        if(dp[i][j] > maxLen){ 

          maxLen = dp[i][j]; 

          end = i; 

        } 

      } 

    } 

  } 

  return s1.substring(end - maxLen, end); 

以上就是我在Java中求最大公约数和最大公共子串的实现代码,希望对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复