import java.util.*;


public class Solution {
    /**
     * longest common substring
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @return string字符串
     */
    public String LCS (String str1, String str2) {
        // write code here
        int a=str1.length(),b=str2.length(),max=0,index=-1;
        int[][] dp=new int[a+1][b+1];
        for(int i=0;i<a;i++){
            for(int j=0;j<b;j++){
                if(str1.charAt(i)==str2.charAt(j)){
                    //如果相等则在前面的基础上+1
                    dp[i+1][j+1]=dp[i][j]+1;
                    //如果大于最大长度,获得末尾节点的下标和最大值,则取区间[index-max,index]
                    if(dp[i+1][j+1]>max){
                        index=i+1;
                        max=dp[i+1][j+1];
                    }
                }else{
                    dp[i+1][j+1]=0;
                }
            }
        }
        if(index==-1)return "";
        return str1.substring(index-max,index);
    }
}