我的垃圾的思路,不会DP了呀,虽然在学校学过这道题
import java.util.*;


public class Solution {
    /**
     * longest common subsequence
     * @param s1 string字符串 the string
     * @param s2 string字符串 the string
     * @return string字符串
     */
    public String LCS (String s1, String s2) {
        // write code here
        String maxLengthString = "";
        ArrayList<Node> myNode = new ArrayList<Node>();
        for(int i = s1.length() - 1; i>= 0; i--){
            char temC = s1.charAt(i);
            ArrayList<Node> temList = new ArrayList<Node>();
            for(int j =s2.length() - 1; j>= 0; j--){
                char temC1 = s2.charAt(j);
                if(temC1 == temC){
                    String temString = "";
                    Node temNode1 = new Node();
                    for(int jj = 0; jj<myNode.size(); jj++){
                        Node temNode = myNode.get(jj);
                        if(temNode.index > j && temNode.s.length() > temString.length()){
                            temString  = temNode.s;
                        }
                    }
                    temNode1.s = temC + temString;
                    if(temNode1.s.length() > maxLengthString.length()){
                    maxLengthString = temNode1.s;
                    }
                    temNode1.index = j;
                    temList.add(temNode1);
                }
            }
            for(int j = 0; j<temList.size();j++){
                myNode.add(temList.get(j));
            }
        }
        for(int i = 0; i<myNode.size(); i++){
           // System.out.println(myNode.get(i).s);
        }
        if(maxLengthString.length() == 0){
            return "-1";
        }
        return maxLengthString;
        /*
        subString(s1,s2,0,0,"");
        String maxString = "";
        if(maxLength == 0){
            return "-1";
        }
        for(int i = 0;i<myList.size(); i++){
             //System.out.println(myList.get(i));
            if(maxString.length() < myList.get(i).length()){
               
                maxString = myList.get(i);
            }
        }
        return maxString;
        
        */
    }
    class Node{
        String s;
        int index;
    }
    
    /*
    ArrayList<String> myList = new ArrayList<String>();
    int maxLength = 0;
    private void subString(String s1,String s2,int index1,int index2,String nowString){
        //System.out.println(nowString + ": "+ index1 + " "+index2);
        if(index1 >= s1.length() || index2 >= s2.length() ){
            if(nowString.length() != 0){
             if(nowString.length() > maxLength){
                   maxLength= nowString.length();
                    myList.add(nowString);
                }
            }
            return ;
        }
        char temC = s1.charAt(index1);
        int index22 = -1;
        for(int i = index2; i< s2.length(); i++){
            char temC2 = s2.charAt(i);
            if(temC == temC2){
                 index22 = i+1;
                break;
            }
        }
        if(index22 != -1){
            subString(s1,s2,index1+1,index22,nowString + temC);
        }
        subString(s1,s2,index1+1,index2,nowString);
        
    }
    */
}