深度优先

这个家伙好懒,除了文章什么都没留下

0%

【算法】最长连续字母序列的长度

1006.最长连续字母序列的长度

Description

给定一个 query 和一个 text,均由小写字母组成。要求在 text 中找出以同样的顺序连续出现在 query 中的最长连续字母序列的长度。例如, query 为“acbac”,text 为 “acaccbabb”,那么 text 中的“cba”为最长的连续出现在 query 中的字母序列,因此, 返回结果应该为其长度 3。请注意程序效率。

注意:变量在程序中直接赋值

String query = “acbac”;

String text = “acaccbabb”;

二维数组,打表做

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Scanner;

public class T6 {

/**
* @param args
*/
public static void main(String[] args) {

Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
String s2=sc.nextLine();
sc.close();
int n=getStrMax(s1,s2);
System.out.println(n);
}

private static int getStrMax(String s1, String s2) {
int n=s1.length();
int m=s2.length();

int[][] data=new int[n+1][m+1];
int max=0;
for (int i = 1; i < n+1; i++) {
for (int j = 1; j < m+1; j++) {
if(s1.charAt(i-1)==s2.charAt(j-1)){
data[i][j]=data[i-1][j-1]+1;
}else{
data[i][j]=0;
}

if(data[i][j]>max){
max=data[i][j];
}
}
}
return max;
}
}