1. 程式人生 > >最長公共子串

最長公共子串

pri 矩陣 har 模擬 cnblogs return sta turn ||

https://my.oschina.net/gaosheng/blog/308853

public static int LCS(char query[], char text[]) { int len_query = query.length; int len_text= text.length; //數組c記錄匹配情況,模擬二維矩陣 int[] c = new int[len_text]; int len, i, j; len=0; for(i=0; i<len_query; i++) { //不反過來會把之前數組元素沖掉的,因為後面的元素需要根據前面的元素計算 for(j=len_text-1; j>=0; j--) { if(query[i] == text[j]) { if(i==0 || j==0) c[j]=1; else c[j]=c[j-1]+1; } else c[j] = 0; if(c[j] > len) len=c[j]; } System.out.println(Arrays.toString(c)); } return len; }

  

LCS(new char[]{‘a‘,‘b‘,‘c‘,‘d‘},new char[]{‘b‘,‘c‘,‘d‘});

[0, 0, 0]
[1, 0, 0]
[0, 2, 0]
[0, 0, 3]

最長公共子串