0
点赞
收藏
分享

微信扫一扫

最长公共字符串java

实现最长公共字符串的Java程序

作为一名经验丰富的开发者,我很高兴能够指导你如何实现最长公共字符串的Java程序。在开始之前,我会先给你展示整个实现的流程,并提供每个步骤所需的代码和注释。

流程展示

下面是实现最长公共字符串的Java程序的流程示意表格:

步骤 描述
1 输入两个字符串
2 创建一个二维数组来存储最长公共字符串的长度
3 初始化二维数组的第一行和第一列
4 遍历两个字符串的每个字符
5 比较两个字符是否相同
6 更新二维数组中对应位置的值
7 找到最长公共字符串的长度
8 根据最长公共字符串的长度找到最长公共字符串
9 输出最长公共字符串

接下来,让我们一步一步地实现这个程序。

步骤1:输入两个字符串

首先,我们需要让用户输入两个字符串。我们可以使用Scanner类来实现这个功能。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第一个字符串:");
        String str1 = scanner.nextLine();
        System.out.print("请输入第二个字符串:");
        String str2 = scanner.nextLine();
        // 其他代码
    }
}

上面的代码中,我们使用Scanner类来读取用户的输入,并将输入的字符串存储在str1和str2变量中。

步骤2:创建二维数组

接下来,我们需要创建一个二维数组来存储最长公共字符串的长度。这个二维数组的大小应该是str1.length() + 1行和str2.length() + 1列。

int[][] dp = new int[str1.length() + 1][str2.length() + 1];

我们使用一个名为dp的二维数组来表示最长公共字符串的长度。dp[i][j]表示以str1.charAt(i-1)和str2.charAt(j-1)结尾的最长公共字符串的长度。

步骤3:初始化二维数组

在我们开始遍历两个字符串的每个字符之前,我们需要初始化二维数组的第一行和第一列。我们可以使用一个循环来实现这个功能。

for (int i = 0; i <= str1.length(); i++) {
    dp[i][0] = 0;
}

for (int j = 0; j <= str2.length(); j++) {
    dp[0][j] = 0;
}

在上面的代码中,我们将dp数组的第一行和第一列的所有元素都初始化为0。

步骤4:遍历两个字符串的每个字符

接下来,我们需要遍历两个字符串的每个字符,并比较它们是否相同。我们可以使用两个嵌套的循环来实现这个功能。

for (int i = 1; i <= str1.length(); i++) {
    for (int j = 1; j <= str2.length(); j++) {
        // 其他代码
    }
}

在上面的代码中,我们使用两个循环来遍历两个字符串的每个字符。循环变量i表示str1的索引,循环变量j表示str2的索引。

步骤5:比较两个字符是否相同

在每次循环中,我们需要比较str1.charAt(i-1)和str2.charAt(j-1)这两个字符是否相同。如果相同,则说明这两个字符属于最长公共字符串的一部分。

if (str1.charAt(i-1) == str2.charAt(j-1)) {
    // 其他代码
}

在上面的代码中,我们使用if语句来判断两个字符是否相同。

步骤6:更新二维数组的值

如果两个字符相同,我们需要更新dp[i][j]的值。我们可以使用以下代码实现这个功能。

dp[i][j] = dp
举报

相关推荐

0 条评论