题解 | #公共子串计算#

公共子串计算

https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        String a, b;
        try {
            a = r.readLine();
            b = r.readLine();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        char[] chs1 = a.toCharArray();
        char[] chs2 = b.toCharArray();
        char[] tmp;
        int le1 = chs1.length, le2 = chs2.length, i;
        if (le1 > le2) {//保证小串在前
            i = le1;
            le1 = le2;
            le2 = i;
            tmp = chs1;
            chs1 = chs2;
            chs2 = tmp;
        }
        i = longestSubstr(chs1, chs2, le1 + 1, le2 + 1);
        System.out.print(i);
    }

    //常规动态规划求解
    protected static int longestSubstr(char[] chs1, char[] chs2, int m, int n) {
        int[][] dp = new int[m][n];
        int i = 1, j, max = 0;
        while (i < m) {
            j = 1;
            while (j < n) {
                if (chs1[i - 1] == chs2[j - 1]) {
                    dp[i][j] = 1 + dp[i - 1][j - 1];
                    max = dp[i][j] > max ? dp[i][j] : max;
                }
                j++;
            }
            i++;
        }
        return max;
    }
}

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务