From 26690e607a30e300fdecc40d4c6f5f211f037cad Mon Sep 17 00:00:00 2001 From: descifrado Date: Tue, 2 Oct 2018 10:43:14 +0530 Subject: [PATCH] Adding-Algo --- data-structures/UseStack.java | 38 ++++++++++++++++ .../LongestCommonSubsequence.java | 45 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 data-structures/UseStack.java create mode 100644 dynamic-programming/LongestCommonSubsequence.java diff --git a/data-structures/UseStack.java b/data-structures/UseStack.java new file mode 100644 index 0000000..c237e52 --- /dev/null +++ b/data-structures/UseStack.java @@ -0,0 +1,38 @@ +class Stack +{ + int stcksize=100; + int stck[] = new int[stcksize]; + int tos; + Stack() + { + tos=-1; + } + void push(int item) + { + if(tos==stcksize-1) + System.out.println("Stack Overflow"); + else + stck[++tos]=item; + } + int pop() + { + if(tos<0) + { + System.out.println("Stack Underflow."); + return 0; + } + else + return stck[tos--]; + } +} +public class UseStack +{ + public static void main(String args[]) + { + Stack s=new Stack(); + s.push(1); + s.push(2); + s.push(3); + s.pop(); // return 3 as it was the last inserted element + } +} \ No newline at end of file diff --git a/dynamic-programming/LongestCommonSubsequence.java b/dynamic-programming/LongestCommonSubsequence.java new file mode 100644 index 0000000..9917ab2 --- /dev/null +++ b/dynamic-programming/LongestCommonSubsequence.java @@ -0,0 +1,45 @@ +// Finding Longest Common Subsequence of Two Strings Using Dynamic Programming +import java.util.Scanner; +public class LongestCommonSubsequence +{ + int lcs(char[] X, char[] Y, int m, int n) + { + int DP[][] = new int[m+1][n+1]; + // Bottom-Up Approach for dp + for(int i=0;i<=m;i++) + { + for(int j=0;j<=n;j++) + { + if(i==0 || j==0) + DP[i][j]=0; + else if(X[i-1]==Y[j-1]) + DP[i][j]=DP[i-1][j-1]+1; + else + DP[i][j] = max(DP[i-1][j], DP[i][j-1]); + } + } + return DP[m][n]; + } + int max(int a, int b) + { + if(a>b) + return a; + else + return b; + } + public static void main(String[] args) + { + LongestCommonSubsequence obj=new LongestCommonSubsequence(); + String s1="",s2=""; + Scanner scan=new Scanner(System.in); + System.out.println("Enter 1st String"); + s1=scan.next(); + System.out.println("Enter 2nd String"); + s2=scan.next(); + char[] X=s1.toCharArray(); + char[] Y=s2.toCharArray(); + int m=X.length; + int n=Y.length; + System.out.println("Length of Longest Common Subsequence is: "+obj.lcs(X,Y,m,n)); + } +} \ No newline at end of file