find LCS

• November 28th, 2010, 09:37 AM
Anemone_
find LCS
Hey I have a algoritm
that should get the longest comnon subseqquence
between two strings
Code :

```public class Find {   public static String find(String str1, String str2) { int i, j; int m = str1.length(); int n = str2.length();   String[][] b = new String [m][n];   for (int s = 1; s<m; s++) b[s][0] = ""; for (int z = 1; z<n; z++) b[0][z] = "";   for (i = 1; i<m; i++) for(j = 1; j<n; j++) { if(str1.charAt(i-1) == str1.charAt(j-1)) b[i][j] = b[i-1][j-1]+str1.charAt(+1); else if(b[i-1][j].length() >= b[i][j-1].length()) b[i][j]= b [i-1][j]; else b[i][j] = b[i][j-1]; } return b [m-1][n-1] } public static void main (String[] args) { String str1 = "abcs" String str2 = "sac" System.out.print(find(str1,str2)); }```

so if you would impliment
two strings: "abcs" and "sac"
it should create a matrix that should look like this

"" "" "" ""
"" "" "a" "a"
"" "" "a" "a"
"" "" "a" "ac"
"" "s" "s" "ac"

with the ac as the common between the two
problem is that Ive tried to run it but doesent get this result
when i run it.
can anyone help here?
• November 28th, 2010, 01:03 PM
copeg
Re: find LCS
First, missing a few semi-colons so as is this won't compile. Second,
Code :

`if(str1.charAt(i-1) == str1.charAt(j-1))`
I believe you want to compare str1 to str2, not str1 to itself. Next, you should take into account the added first row/column padding for the matrix, so you need to iterate through the matrix taking this into account