LongestCommonStringSubsequence Program in java





public class LongestCommonStringSubsequence {

public static void main(String[] args) {

String A = "ABCDF";
String B = "ACF";

String result = getCommonSubsequance(A,B);
System.out.println(result);
}

private static String getCommonSubsequance(String a, String b) {
int[][] arr = new int[a.length()+1][b.length()+1];
for(int i=1;i<=a.length();i++){
for(int j=1;j<=b.length();j++){
if(a.charAt(i-1) == b.charAt(j-1)){
arr[i][j] = arr[i-1][j-1]+1;
}else{
arr[i][j] = Integer.max(arr[i][j-1], arr[i-1][j]);
}
}
}
int lengthOfLongestCommonSubString = arr[a.length()][b.length()];

String str = "";
Set<Character> set = new LinkedHashSet<>();
for(int i=arr.length-1;i>0;i--){
for(int j=arr[0].length-1;j>0;j--){
if(arr[i][j] == ((arr[i-1][j-1])+1) && a.charAt(i-1) == b.charAt(j-1) 
                           && arr[i-1][j] == arr[i][j-1]){
set.add(a.charAt(i-1));
}
}
}
for(Character c:set){
str +=c;
}
return str;
}
}



Restult : FCA



Post a Comment

Previous Post Next Post