Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. int f(int idx1, int idx2, vector<vector<int>> &dp, const string A, const string B){
  2.     if(idx1 == A.size()) return B.size() - idx2; // adding all to get to B
  3.     if(idx2 == B.size()) return A.size() - idx1; // deleting all remaining in A
  4.     int &ans = dp[idx1][idx2];
  5.     if(~ans) return ans;
  6.     if(A[idx1] == B[idx2]) return ans = f(idx1 + 1, idx2 + 1, dp, A, B); // just move foward
  7.     int insert = f(idx1, idx2 + 1, dp, A, B);
  8.     int del = f(idx1 + 1, idx2, dp, A, B);
  9.     int replace = f(idx1 + 1, idx2 + 1, dp, A, B);
  10.     return ans = 1 + min(insert, min(del, replace));
  11. }
  12.  
  13. int Solution::minDistance(string A, string B) {
  14.     vector<vector<int>> dp(A.size(), vector<int>(B.size(),-1));
  15.     return f(0,0, dp, A, B);
  16. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement