【每日蓝桥】48、一七年省赛Java组真题“最大公共子串”

98 阅读1分钟

你好呀,我是灰小猿,一个超会写bug的程序猿!

欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!

标题:最大公共子串

最大公共子串长度问题就是:

求两个串的所有子串中能够匹配上的最大长度是多少.

比如: "abcdkkk" 和"baabcdadabc",

可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4.

下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法.

public class Main {
	
	static int f(String s1,String s2) {
		char[] c1 = s1.toCharArray();
		char[] c2 = s2.toCharArray();
		
		int [][]a = new int[c1.length+1][c2.length+1];

		int max = 0;

		for (int i = 1;