Skip to content

Commit

Permalink
Add solution for Longest Common Subsequence and problem.md
Browse files Browse the repository at this point in the history
  • Loading branch information
anaghapuv committed Oct 17, 2024
1 parent bf2e4ab commit 9cd5568
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
30 changes: 30 additions & 0 deletions Cpp/Longest Common Subsequence/problem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Given two strings text1 and text2, return the length of their longest common subsequence. If there is no common subsequence, return 0.

A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.

For example, "ace" is a subsequence of "abcde".
A common subsequence of two strings is a subsequence that is common to both strings.



Example 1:

Input: text1 = "abcde", text2 = "ace"
Output: 3
Explanation: The longest common subsequence is "ace" and its length is 3.
Example 2:

Input: text1 = "abc", text2 = "abc"
Output: 3
Explanation: The longest common subsequence is "abc" and its length is 3.
Example 3:

Input: text1 = "abc", text2 = "def"
Output: 0
Explanation: There is no such common subsequence, so the result is 0.


Constraints:

1 <= text1.length, text2.length <= 1000
text1 and text2 consist of only lowercase English characters.
56 changes: 56 additions & 0 deletions Cpp/Longest Common Subsequence/solution.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#include <iostream>
#include <string>
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;
}

0 comments on commit 9cd5568

Please sign in to comment.