Skip to content
Snippets Groups Projects
Commit 424f21b5 authored by Bruno Freitas Tissei's avatar Bruno Freitas Tissei
Browse files

Add Edit Distance and LIS

parent 817167a0
No related branches found
No related tags found
No related merge requests found
/**
* Edit Distance
*
* Complexity (Time): O(m*n)
* Complexity (Space): O(m*n)
*/
int edit_distance(string a, string b) {
int n = a.size();
int m = b.size();
vector<vector<int>> dp(n+1, vector<int>(m+1));
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= m; ++j) {
if (i == 0)
dp[i][j] = j;
else if (j == 0)
dp[i][j] = i;
else if (a[i-1] == b[j-1])
dp[i][j] = d[i-1][j-1];
else
dp[i][j] = 1 + min(dp[i][j-1], // Insert
min(dp[i-1][j], // Remove
dp[i-1][j-1])); // Replace
}
}
return dp[n][m];
}
/**
* Longest Increasing Subsequence (LIS)
*
* Complexity (Time): O(n^2)
* Complexity (Space): O(n)
*/
int lis(vector<int> v) {
int n = v.size();
vector<int> lis(n);
lis[0] = 1;
for (int i = 1; i < n; ++i) {
lis[i] = 1;
for (int j = 0; j < i; ++j)
if (v[i] > v[j] and lis[i] < lis[j] + 1)
lis[i] = lis[j] + 1;
}
return *max_element(all(lis));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment