From 3fe4344348f754fa684202d65b7c85937ba4d6c5 Mon Sep 17 00:00:00 2001 From: Akshit Agarwal <154016441+akshit397a@users.noreply.github.com> Date: Sun, 20 Oct 2024 15:15:26 +0530 Subject: [PATCH] Create Longest_Common_Subsequence.cpp --- .../Longest_Common_Subsequence.cpp | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 C++/Data-Structures/00-algorithms/Longest_Common_Subsequence.cpp diff --git a/C++/Data-Structures/00-algorithms/Longest_Common_Subsequence.cpp b/C++/Data-Structures/00-algorithms/Longest_Common_Subsequence.cpp new file mode 100644 index 0000000..0ca44dd --- /dev/null +++ b/C++/Data-Structures/00-algorithms/Longest_Common_Subsequence.cpp @@ -0,0 +1,57 @@ +// Longest Common Subsequence +#include +#include +using namespace std; + +class Solution { +public: + int longestCommonSubsequence(string text1, string text2) { + int m = text1.length(); + int n = text2.length(); + + // Creating table + int c[m+1][n+1]; + for(int i = 0; i <= m; i++) { + for(int j = 0; j <= n; j++) { + c[i][j] = 0; + } + } + + for(int i = 1; i <= m; i++) { + for(int j = 1; j <= n; j++) { + if (text1[i-1] == text2[j-1]) { + c[i][j] = c[i-1][j-1] + 1; + } + else if (c[i-1][j] >= c[i][j-1]) { + c[i][j] = c[i-1][j]; + } + else { + c[i][j] = c[i][j-1]; + } + } + } + + return c[m][n]; + } +}; + +int main() { + Solution solution; + + // Test Case 1 + string text1 = "abcde"; + string text2 = "ace"; + cout << "Test Case 1 Output: " << solution.longestCommonSubsequence(text1, text2) << endl; + + // Test Case 2 + text1 = "abc"; + text2 = "abc"; + cout << "Test Case 2 Output: " << solution.longestCommonSubsequence(text1, text2) << endl; + + // Test Case 3 + text1 = "abc"; + text2 = "def"; + cout << "Test Case 3 Output: " << solution.longestCommonSubsequence(text1, text2) << endl; + + return 0; +}