Quick actions

cmd+k|ctrl+k

Navigation

Languages

print lcs

Snippet info

Language

Java

Visibility

public

Author

skorni24

Created

2024-03-05T14:34:30.429783Z

Updated

2024-03-05T14:34:49.651103Z

import java.util.*;
class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s1=sc.next();
        String s2=sc.next();
        System.out.print(lcs(s1,s2));
    }
    public static String lcs(String s1,String s2){
        int m=s1.length();
        int n=s2.length();
        int t[][]=new int[m+1][n+1];
        for(int i=1;i<m+1;i++){
            for(int j=1;j<n+1;j++){
                    if(s1.charAt(i-1)==s2.charAt(j-1)){
                        t[i][j]=1+t[i-1][j-1];
                    }
                    else{
                        t[i][j]=Math.max(t[i-1][j],t[i][j-1]);
                    }
            }
        }
        StringBuilder sb=new StringBuilder();
        int i=m;
        int j=n;
        while(i>0&&j>0){
            if(s1.charAt(i-1)==s2.charAt(j-1)){
                sb.append(s1.charAt(i-1));
                i--;
                j--;
            }
            else{
                if(t[i-1][j]>t[i][j-1]){
                    i--;
                }
                else{
                j--;
            }
            }
        }
        return sb.reverse().toString();
    }
    
}
INFO