import java.util.*;
public class Solution {
    /**
     * longest common subsequence
     * @param s1 string字符串 the string
     * @param s2 string字符串 the string
     * @return string字符串
     */
    public  static  String LCS (String s1, String s2) {
        int[][] count = new int[s1.length()+1][s2.length()+1];
        StringBuilder maxString = new StringBuilder();

        for (int i = 0 ; i < s1.length() ;i++){
            for (int j = 0 ; j  < s2.length() ; j++){
                if (s1.charAt(i) == s2.charAt(j)){
                    count[i+1][j+1] = count[i][j] +1;
                }else {
                    count[i+1][j+1] = Math.max(count[i+1][j],count[i][j+1]);
                }
            }
        }
        int index =1,indexRow =1,indexCol = 1;
        // indexRow indexCol记录下添加到maxString字符的下标,下次添加只能大于这个下标
        for (int i = 1 ; i <= s1.length() ;i++){
            for (int j = 1 ; j  <= s2.length() ; j++){
                if (index == count[i][j] && indexCol < i && indexRow < j){
                    maxString.append(s2.charAt(j-1));
                    indexRow = j;
                    indexCol = i;
                    index++;
                }
            }
        }
        return maxString.toString();
        // write code here
    }
}