/** * Recursive LCS generator * * @author Zach Souser * @version Spring 2013 */ public class RecursiveLCS extends LongestCommonSubsequence { /** * Generate the LCS recursively * * @param a the first string * @param b the second string * @return the LCS */ public String lcs(String a, String b) { if (a.length() == 0 || b.length() == 0) return ""; if (a.charAt(a.length()-1) == b.charAt(b.length()-1)) { return lcs(a.substring(0,a.length()-1),b.substring(0,b.length()-1)) + a.charAt(a.length()-1); } String lcs1 = lcs(a,b.substring(0,b.length()-1)); String lcs2 = lcs(a.substring(0,a.length()-1),b); if (lcs1.length() > lcs2.length()) return lcs1; return lcs2; } }