zoukankan      html  css  js  c++  java
  • Edit Distance

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)

    You have the following 3 operations permitted on a word:

    a) Insert a character
    b) Delete a character
    c) Replace a character

    思路:

    动规

    代码:

     1     int min(int a, int b){
     2         if(a < b)
     3             return a;
     4         return b;
     5     }
     6     int minDistance(string word1, string word2) {
     7         // Note: The Solution object is instantiated only once and is reused by each test case.
     8         int len1 = word1.length(), len2 = word2.length();
     9         if(len1 == 0)
    10             return len2;
    11         if(len2 == 0)
    12             return len1;
    13         vector<vector<int> > v(len1+1, vector<int>(len2+1));
    14         int i,j;
    15         for(i = 1; i <= len1; i++)
    16             v[i][0] = i;
    17         for(i = 1; i <= len2; i++)
    18             v[0][i] = i;
    19         for(i = 1; i <= len1; i++){
    20             for(j = 1; j <= len2; j++){
    21                 if(word1[i-1] == word2[j-1])
    22                     v[i][j] = v[i-1][j-1];
    23                 else
    24                     v[i][j] = min(v[i-1][j-1]+1,min(v[i-1][j]+1, v[i][j-1]+1));
    25             }
    26         }
    27         return v[len1][len2];
    28     }
  • 相关阅读:
    C语言I博客作业09
    C语言I博客作业08
    C语言I作业07
    C语言博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业03
    C语言|博客作业07
    C语言|博客作业06
    C语言|博客作业05
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3405413.html
Copyright © 2011-2022 走看看